我在使用批处理时遇到一些困难。我的目的是使用for循环在目录中循环所有文档,并循环每个文档中的所有行并替换其中的字符串。
当我尝试进行测试时: 我只用一个文档测试代码,即代码:
echo off
set "search=B"
set "replace=A"
set "textfile=Testing.txt"
set "newfile=Output.txt"
cd/d D:\user\testing
(for /f "delims=" %%i in (%textfile%) do(
set "line=%%i"
set local enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"
del %textfile%
rename %newfile% %textfile%
输入如下: 公元前 BCB BCBC
结果: 交流电 ACA ACAC
但是,当我设置另一个for循环时,事情出了问题 代码:
set "rootDir=D:\user\testing"
for %%j in ("%rootDir%\*") do call :Replace "%rootDir%" "%%~nj"
goto :eof
:Replace
set "search=B"
set "replace=A"
set "newfile=Output.txt"
cd /d %1
(for /f "delims=" %%i in (%2) do(
set "line=%%i"
set local enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"
del %textfile%
rename %newfile% %textfile%
goto :eof
这一次将删除文档中的所有内容,并显示其文档名称。
有人可以帮助我解决此问题吗?逻辑上有什么问题吗? 请帮助