用批处理替换文本内容的字符串, 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

????
搞定了。
展开
 我来答
fly2084
高能答主

2015-10-09 · 有什么不懂的尽管问我
知道大有可为答主
回答量:4.1万
采纳率:83%
帮助的人:6429万
展开全部

不错不错~

分享下我的替换代坦含码

@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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式