处理从文件中读出的批处理文件中文件路径的空格

问题描述 投票:0回答:1

我正在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

windows batch-file
1个回答
0
投票

您需要将

call :$change %%i
替换为
call :$change "%%i"
以便将引用的文件名传递给您的子例程,然后在子例程中您可能需要将
%1
替换为
"%~1"
。如果双引号存在,则使用波浪号去除双引号,然后添加新的双引号。

© www.soinside.com 2019 - 2024. All rights reserved.