下面是自己改的一个文本搜索替换的批处理,在临时文件名.txt中每行是要替换的文件名,要求是将列表中的文件内的部分内容替换为文件名的前14位,要替换的内容是手动输入的,需要保留源文件中的空格,现在的问题是替换后的旧内容被删除了,但是新内容位置不在原内容位置,而是跑到了每行结尾和空格的位置。求大神指教,多谢。
@echo @setlocal enabledelayedexpansion set old= set /p old= 请输入即将被替换的内容:for /f %%a in (临时文件名.txt) do (set str1=%%aset "file=%%a"for %%i in ("!file!") do (set "file=%%~fi" set "new=!str1:~0,14!"::cd.>"%file%_tmp.txt" for /f "tokens=1* delims=:" %%j in ('findstr /n .* "!file!"') do ( set str=%%k if not "!str!"=="" set str=!str:%old%=!!new!!! rem:此句完成替换结果是替换后将新的内容附在每个空格后面了>>"!file!_tmp.txt" echo.!str!pause )pause )copy "!file!" "!file!_bak.txt" >nul 2>nul ::move "!file!_tmp.txt" "!file!" start "" "!file!_tmp.txt")
例如我的临时文件名里面有下面内容:
测试文件000000000001.txt测试文件000000000002.txt测试文件000000000003.txt
……
文件测试文件000000000001.txt,内容为:
这是一个测试程序的文件这个文件名叫“测试文件1”下面是空格
空格结束,下面是结束语祝好运
替换"测试"后应该为:
文件”测试文件000000000001.txt“,内容为:
这是一个测试文件0000000000程序的文件这个文件名叫“测试文件0000000000文件1”下面是空格
空格结束,下面是结束语祝好运
但是现在替换后却是下面内容:这是一个程序的文件 测试文件0000000000这个文件名叫“文件1” 测试文件0000000000下面是空格 测试文件0000000000 测试文件0000000000空格结束,下面是结束语 测试文件0000000000祝好运 测试文件0000000000
????
搞定了。
不错不错~
分享下我的替换代码
@echo off & setlocal enabledelayedexpansion将1.txt文件里的123456替换为指定内容
以下为替换多个内容
@echo off & setlocal enabledelayedexpansion用批处理替换文本内容的字符串,
将1.txt文件里的123456替换为指定内容 以下为替换多个内容 echo off & setlocal enabledelayedexpansionfor \/f "tokens=*" %%i in (1.txt) do ( if "%%i"=="" (echo.) else (set "line=%%i" & call :chg))>>new_1.txtpauseexit:chgrem 这个是保留空行set "line=!line:1=a!"rem...
怎样用批处理文件替换文本文件中的字符串?
echo off ::下面这行设置你要替换的文件名,这里是test.txt,改成你自己的 set file=test.txt if exist result.txt del result.txt for \/f "tokens=*" %%i in (%file%) do call :begin ^"%%i^"start notepad result.txt goto :eof :begin set var=%~1 if defined var set var=%var:...
如何用批处理替换文件中的多个字符且保留空格空行?
另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行<# :cls&echo off&cd \/d "%~dp0"rem 将一个txt文本文件里的多个指定字符串内容分别替换成其他字符串内容set #=Any question&set _=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%_% %z%powershell -NoProfile -Execut...
批处理替换字符(串)
1. 打开Tools->Batch Runner菜单。2. 点击Pick Files把要替换的文件都选中。3. 点击Fast Replace,点击Add加入替换规则。在search=>输入"openfile"在Replace=>输入"regfile"4. 重复第3步,直到所有的规则都加入 5. 点击Start即可 注:1.注意提前备份 2.在第5步之前可以点击Export把规则存入一个文...
求批量查找修改文件内容的批处理命令
text=请输入需要替换字符串的文本文件名:if not EXIST text set\/p text=文件不存在,请重新输入:set\/p b=请输入要替换的字符串:set\/p a=请输入替换后的字符串:for \/f "tokens=*"i in (%text%)do (set var=%%i set "var=!var:%b%=%a%!"echo !var!>>9999995.txt )del text ren ...
批处理如何替换文本中的指定内容---满分
把如上代码保存为 批处理 例如名字为 ch.bat 并计划把 C盘上 的123.TXT里的 AAAA 替换为 BBBB 并保存到 D盘为321.txt 那就运行 ch c:\\123 AAAA BBBB d:\\321.txt 第一个参数是 源文件 第二个是 被替换的字符 第三个是替换的字符 第四个 是保存路径~ 没有加入容错处理 所以文件...
如何用批处理替换掉一个文本中的字符串到另一个文本中的字符串?
">>c.txt echo !var!)copy \/y c.txt b.txt :delall if exist c.txt del c.txt\/f\/q goto :eof rem rem 星号上代码另存为xx.bat,和b.txt放在同级目录下 rem MAC地址获取那句我的和你的不一样,你看不合用就改成你自己的吧 rem b.txt做好备份,这个运行之后就替换了 ...
批处理如何实现文本文件中指定行内容的替换?
5、如果ini文件原内容如下图所示。6、运行脚本后,得到的新ini文本就变成如下图所示了。因为我们生成了中间文件,所以在脚本最后,一定要记得删除该文件 del tmp.txt。注意事项:批处理应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)解释运行。
怎么用批处理,批量替换多个文文本里的中括号内指定字符后面的内容?
<# :cls echo off rem 将txt文本文件内指定特征字符串中的部分内容替换为其他指定内容 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4 title %#% +%$%%$%\/%@% %z cd \/d "%~dp0"powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]...
批处理:批量替换文件或者文件夹指定的字符串
将bat文件放在文件夹(含有要修改的文件、文件夹)中。这个代码的作用是删除,如果要替换,将这一句 Set b=!a:-a=!修改成 Set b=!a:-a=替换!echo off&SetLocal EnableDelayedExpansion For \/f "delims=" %%i in ('dir \/b') do (Set a=%%i Set b=!a:-a=!ren "!a!" "!b!" )pa...