Board logo

标题: [文本处理] BAT如何批量在txt文本内容的最前面怎么插入一段文字? [打印本页]

作者: 修修的想法    时间: 2018-8-9 10:50     标题: BAT如何批量在txt文本内容的最前面怎么插入一段文字?

  1. @echo off
  2. :: 注意把要加的内容写在第7(即代码中more +7的那个数)行之下
  3. for /f "delims=" %%i in ('dir/b *.txt')do (
  4. echo %%i
  5. more +7 "%~0">>"%%i")
  6. echo 处理完毕&ping -n 3 127.1>nul
  7. goto :eof
  8. 此处改成要加的内容(可以为多行)
复制代码
找到的资料 有误   都是加在最末尾的还是乱码  

求解决
作者: xczxczxcz    时间: 2018-8-10 09:04

把文件夹拖到批处理上。
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "delims=" %%a in ("%~1\..") do (
  3.       set "新路径=%%~fa"
  4.   md "%%~fa\添加内容">nul 2>nul
  5.   del /q "%%~fa\添加内容\*.txt"
  6. )
  7. for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
  8.       set "文件名=%%~nxa"
  9.   set /a n=0
  10.       for /f "delims=" %%i in ('type "%~1\%%a"') do (
  11.       set /a n+=1
  12.       echo [!n!] %%i>>"%新路径%\添加内容\%%~nxa"
  13.       if !n! equ 7 call :LOOP
  14. )
  15. )
  16. pause & exit
  17. :LOOP
  18. echo 我是中国人,我是中国人>>"%新路径%\添加内容\%文件名%"
  19. echo 去你奶奶的美国姥>>"%新路径%\添加内容\%文件名%"
  20. goto :eof
复制代码

作者: 修修的想法    时间: 2018-8-10 12:48

回复 2# xczxczxcz

好的感谢  我试试
作者: Batcher    时间: 2018-8-10 14:00

回复 2# xczxczxcz


    if !n! equ 7 这个条件判断的没有必要的吧,楼主是要在文本的最前面添加内容。
作者: Batcher    时间: 2018-8-10 14:02

回复 1# 修修的想法


    乱码的问题需要检查一下txt文件的格式,不是ANSI格式的吧?
作者: xczxczxcz    时间: 2018-8-10 14:52

回复 4# Batcher


    如果文本是加在行首,那与楼主的所说的"可以为多行"相矛盾。楼主的注释中声明在第七行之下。若把多行文本当作一行倒是没问题。看来楼主是要举个试范才能明白意图。如楼主的txt文件为utf8的话,批处中要加一条转码的命令才能正确运行。
作者: Batcher    时间: 2018-8-10 14:59

回复 6# xczxczxcz


1. 楼主的意思不是加在每行的行首,而是加在第一行。比如原来是:
a
b
c
添加之后变成:
bbs
bathome
net

a
b
c

2. 你可能没太理解顶楼代码的作用,它不是要在txt的第七行添加内容,而是介绍bat本身的用法,它是利用 more +7 %0 这个命令的执行结果实现插入一段文本的。
作者: 修修的想法    时间: 2018-8-10 16:35

回复 7# Batcher


理解的对  乱码问题是你说的那个问题  感谢   可是还是在末尾 不是在最前面
作者: 修修的想法    时间: 2018-8-10 16:40

回复 2# xczxczxcz

不是太明白了 不知道的错误  本意以为在原来的代码上更改就可以的以为
作者: xczxczxcz    时间: 2018-8-10 16:55

回复 9# 修修的想法

偶在 win10 1803 电脑上测试 more +n 根本就运行不了。提示参数过多。晚会到虚拟机中试下。
作者: Batcher    时间: 2018-8-10 17:15

回复 9# 修修的想法


是的,顶楼代码改一改就行了。
  1. @echo off
  2. :: 注意把要加的内容写在第8(即代码中more +8的那个数)行之下
  3. for %%i in (*.txt) do (
  4.     more +8 "%~0" > "%%i.tmp"
  5.     type "%%i" >> "%%i.tmp"
  6.     move /y "%%i.tmp" "%%i"
  7. )
  8. goto :eof
  9. 此处改成要加的内容(可以为多行)
复制代码

作者: xczxczxcz    时间: 2018-8-10 18:20

回复 11# Batcher

偶理解了管理员代码的意思了,就是要把后附加的内容加到原有txt的最前面。用 more +n 来屏掉批处理代码本身回显。

在win10 中  more +n 会运行错误。需要开启扩展。即 more /e +n 才正常。win8 用 more +n  或 more /e +n 都正常。
作者: 修修的想法    时间: 2018-8-10 18:32

回复 11# Batcher

完美解决  就是不知能否支持子目录




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2