标题: [文本处理] BAT如何批量在txt文本内容的最前面怎么插入一段文字? [打印本页]
作者: 修修的想法 时间: 2018-8-9 10:50 标题: BAT如何批量在txt文本内容的最前面怎么插入一段文字?
- @echo off
- :: 注意把要加的内容写在第7(即代码中more +7的那个数)行之下
- for /f "delims=" %%i in ('dir/b *.txt')do (
- echo %%i
- more +7 "%~0">>"%%i")
- echo 处理完毕&ping -n 3 127.1>nul
- goto :eof
- 此处改成要加的内容(可以为多行)
复制代码
找到的资料 有误 都是加在最末尾的还是乱码
求解决
作者: xczxczxcz 时间: 2018-8-10 09:04
把文件夹拖到批处理上。- @echo off & setlocal EnableDelayedExpansion
-
- for /f "delims=" %%a in ("%~1\..") do (
- set "新路径=%%~fa"
- md "%%~fa\添加内容">nul 2>nul
- del /q "%%~fa\添加内容\*.txt"
- )
- for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
- set "文件名=%%~nxa"
- set /a n=0
- for /f "delims=" %%i in ('type "%~1\%%a"') do (
- set /a n+=1
- echo [!n!] %%i>>"%新路径%\添加内容\%%~nxa"
- if !n! equ 7 call :LOOP
- )
- )
- pause & exit
- :LOOP
- echo 我是中国人,我是中国人>>"%新路径%\添加内容\%文件名%"
- echo 去你奶奶的美国姥>>"%新路径%\添加内容\%文件名%"
- 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# 修修的想法
是的,顶楼代码改一改就行了。- @echo off
- :: 注意把要加的内容写在第8(即代码中more +8的那个数)行之下
- for %%i in (*.txt) do (
- more +8 "%~0" > "%%i.tmp"
- type "%%i" >> "%%i.tmp"
- move /y "%%i.tmp" "%%i"
- )
- goto :eof
- 此处改成要加的内容(可以为多行)
复制代码
作者: 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 |