用批处理替换文本内容的字符串, 5
下面是自己改的一个文本搜索替换的批处理,在临时文件名.txt中每行是要替换的文件名,要求是将列表中的文件内的部分内容替换为文件名的前14位,要替换的内容是手动输入的,需要...
下面是自己改的一个文本搜索替换的批处理,在临时文件名.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 @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
????
搞定了。 展开
1个回答
展开全部
不错不错~
分享下我的替换代坦含码
@echo off & setlocal enabledelayedexpansion
set /p var=请输入替换名称
for /f "tokens=*" %%i in (1.txt) do (
if "%%i"=="" (echo.) else (set "line=%%i" & call :chg)
)>>new_1.txt
pause
exit
set "line=!line:123456=%var%!"
echo !line!
goto :eof
将1.txt文件里的123456替换为指定内容
以下为替换多个内容
@echo off & setlocal enabledelayedexpansion
for /f "tokens=*" 哗漏%%i in (1.txt) do (
if "%%i"=="" (echo.) else (set "line=%%i" & call :chg)
)>>new_1.txt
pause
exit
:chg
rem 这个是保留空行
set "line=!line:1=a!"
rem 第一个替换。。。1变成a
set "line=!line:2=B!"
rem 第二个替换。。。2换成B.....
set "line=!line:3=C!"
rem 第三个。
set "line=!line:4=D!"
rem 第四个。。。
echo 让芦笑!line!
goto :eof
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询