bat在txt文本指定行的头尾插入内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat在txt文本指定行的头尾插入内容?相关的知识,希望对你有一定的参考价值。

批量处理100个txt文本,再文本的第32行的头尾增加内容
比如修改前文本第32行:
这里是第32内容

修改后
111这里是第32内容222

复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行

<# :
cls&echo off&cd /d "%~dp0"
rem 在一个txt文件的第几行/某一行/指定行的开头和末尾添加/插入内容
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$file="xxx.txt";
$findline=32;
$prefix="111";
$suffix="222";
if(-not (test-path -liter $file))write-host ('"'+$file+'" 未找到');exit;;
$enc=[Text.Encoding]::GetEncoding('GB2312');
$text=[IO.File]::ReadAllLines($file, $enc);
for($i=0;$i -lt $text.count;$i++)
    if(($i+1) -eq $findline)$text[$i]=$prefix+$text[$i]+$suffix;

[IO.File]::WriteAllLines($file, $text, $enc);

追问

运行可以,能帮我改成直接修改当下文本并保存,不要重新创建新的resule文件夹吗

追答

按运行后窗口中的提示联系我

参考技术A 这么复杂的操作还是用Powershell脚本吧。BAT处理起来挺费劲。追问

没事量没那么大,可以话帮我写段bat代码

参考技术B BAT处理起来麻烦

如何把一个文件夹下的所有TXT文件,第一句或者第一行头尾插入字符!

比如第一句是 “您好,感谢你的帮助” 改成 “<a>您好,感谢你的帮助</a>”

用DOS 命令,批量更改。方法 开始、运行,输入CMD 进入你放文件的盘符,如在E盘,就输入E: 然后CD 你的文件名 如果嫌麻烦,就复制地址栏里面的的地址,(也要先进入文件所在盘符,如在E盘,就输入E:回车)输入 CD空格然后粘贴地址 回车,键入ren *.txt a*b.txt
还有,文件名里是不能加<>/等字符的 ,ren *.txt a*b.txt 里面的a b代表你要加的字,亲测,可行
参考技术A 用2个bat文件,第一个,假如叫做handlefile.bat,接受文件名作为参数,使用for 循环把文件里面每一行输出到output文件夹下的同名文件里面,只是第一行在前后分别插入<a>和</a>。代码如下,很简单,没什么花头:

@echo off
Setlocal enabledelayedexpansion
set firstline=1
for /F "delims=" %%i in (%1) do (
if !firstline! equ 1 (echo ^<a^>%%i^</a^> > output/%1) else (echo %%i >> output/%1)
set firstline=0
)
endlocal

第二个bat文件,假如叫做run.bat,使用for 循环为本目录下面每一个txt文件调用第一个bat进行处理,代码如下:

@echo off
for %%i in (*.txt) do (
handlefile.bat %%i
)
把两个bat文件放到你的txt文件的目录里面,再创建一个叫做output的文件夹,运行run.bat就可以了。

这样做基本上能够满足需求,有2点需要注意的,1是文件名不能有空格,2是文件里面不能有空行。对于第一点,暂时没想到什么好的办法,只能靠人来保证了。第二点可以有解决方案,就是把第一个handlefile.bat的内容替换为如下,这个办法是使用findstr先保证读取的文件每一行都不是空行,然后再进行处理,运行方法更上面一样,只是多创建一个tmp文件夹
@echo off

Setlocal enabledelayedexpansion
findstr /n .* %1>tmp/%1
for /F "tokens=1* delims=:" %%i in (tmp/%1) do (
if %%i equ 1 (echo ^<a^>%%j^</a^> > output/%1) else ( if ""%%j""=="""" (echo. >> output/%1) else (echo %%j >> output/%1))
)
endlocal本回答被提问者和网友采纳
参考技术B 用批处理,具体代码网上有追问

嗯 就是批处理 我找不到 能帮我找一下么

追答

额 你这个是要替换一段字符啊。你下载CharFind这个软件。
选择你要替换的目录 填写被替换字符 和替换字符

追问

不是替换,是在不改变原来的情况下插入, 如过能在txt文本的前20个字符插入最好

比如一个文本是开头是 "一记响亮的耳光狠狠的搧在这张令人嗔恨的脸上护士趁对方惊。。。。" 改成这样的 "一记响亮的耳光狠狠的搧在这张令人嗔恨的脸上护士趁对方惊。。。。"

这样截取前20个字符 然后头尾插入

追答

那你就把“一记响亮的耳光狠狠的” 替换为 "一记响亮的耳光狠狠的"呗

以上是关于bat在txt文本指定行的头尾插入内容?的主要内容,如果未能解决你的问题,请参考以下文章

bat 批处理 多行多列文本如何拿到指定行的第几列数据?

Linux怎么查看文本中指定行的内容

使用bat,批量给文件夹里的一堆txt文本 的每行内容末尾,添加一段相同的文字

如何使用bat脚本批处理所有txt文本文件中的每一行开头添加一个指定字符

cmd可以删除文本内容吗?

如何用bat删除和替换txt文本中的指定字符串,如把“我”换成“你”和把“我”删除? 请勿灌水!!