一个替换文件内容的bat,怎么保留被替换文件内容的空格,换行等特性。 80

ps:脚本内容cd路径copyA.txtB.txt@echooffsetlocalenabledelayedexpansionsetfn=A.txt(for/f"toke... ps:脚本内容
cd 路径
copy A.txt B.txt
@echo off
setlocal enabledelayedexpansion
set fn=A.txt
(for /f "tokens=*" %%i in (%fn%) do (
set s=%%i
set s=!s:$$1=wwwww!
echo !s!))>temp1126.txt
move /y temp1126.txt "%fn%"
展开
 我来答
依梦琴瑶
高粉答主

2019-02-24 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部

bat不太好处理这种空行特性的。但空格和换行,可以正常保留啊(除非第一个字符就是空格)!如果要保留空行,建议您用VBS代码进行替换吧!以下脚本已集成VBS代码。完美保留您要的特性内容

@echo off & title 替换文件内容 By 依梦琴瑶

::设置路径
set DirPath=D:\Test

::设置源文件
set File=A.txt

::设置备份文件名
set Bak=B.txt

::设置替换前的字符
set Str=$$1

::设置替换后的字符
set Var=wwwww


cd /d "%DirPath%"
copy "%File%" "%Bak%"

call :Replace "%File%" "%Str%" "%Var%"
pause
call :ToMe
exit

:ToMe
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit

:Replace
(echo Set FSO=Wscript.CreateObject("Scripting.FileSystemObject"^)
echo Set F=FSO.OpenTextFile("%~1"^)
echo S=Replace(F.ReadAll,"%~2", "%~3"^)
echo F.Close
echo Set R=FSO.OpenTextFile("%~1",2,True^)
echo R.Write S
echo Wscript.Quit)>Replace.vbs
Replace.vbs
del /f /q Replace.vbs
goto :eof
追问
非常感谢,试了一下确实可以。
请问一下,这个可以指定不同路径、不同文本、不同的替换内容吗。最好能直接覆盖源文件,万分感谢。
上面说的好像有点乱。(简单点说就是指定多个路径,多个文本,和多个替换内容)
qop_dob
2019-02-25 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:4044万
展开全部
@echo off
set @=q&set/an=0x53b7e0b4
set "fn=A.txt"
(for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%fn%"') do (
    set "s=%%j"
    setlocal enabledelayedexpansion
    if defined s (echo;!s:$$1=wwwww!) else echo;
    endlocal
))>tmp.txt
move /y tmp.txt "%fn%"
echo;Any question +%@%%@% %n%
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式