我正在for循环中读取文件
paths.lst
上的文件路径,并寻找要替换的“值”参数,特别是xml
文件。
paths.lst
文件内容如下:
C:\Users\ect\doc doc \test dir\conf\{testdir1}\test.xml
C:\Users\ect\doc doc \test dir\conf\{testdir2}\test.xml
C:\Users\ect\docdoc\testdir\conf\{testdir3}\test.xml
@echo off
for /f %%i in (paths.lst) do call :$change %%i
REM exit
:$change
set filePath='%1'
echo Value changed for:'%filePath%'
set fold='Value=\"0\"'
set fnew='Value=\"1\"'
powershell -Command "(gc %filePath%) -replace %fold%, %fnew% | Out-File %filePath% -encoding utf8"
第一条和第二条路径由于空格无法读出,但脚本适用于第三条路径
C:\Users\ect\docdoc\testdir\conf\{testdir3}\test.xml
您需要将
call :$change %%i
替换为 call :$change "%%i"
以便将引用的文件名传递给您的子例程,然后在子例程中您可能需要将 %1
替换为 "%~1"
。如果双引号存在,则使用波浪号去除双引号,然后添加新的双引号。