延迟扩展字符串变量的操作失败

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

我试图从XML文件中找到一个特定的行,并使用字符串操作操作提取值。

以下是我正在尝试的代码。

@echo off
setlocal enabledelayedexpansion

::Expected line is "<filename>c:\temp\file1</filename>"

for /f "tokens=*" %%i in ('findstr /i "filename" file1.props') do (
    SET LINE=%%i
)

echo !LINE!

SET FILENAME=!LINE:<filename>=!
SET FILENAME=%FILENAME:</filename>=%
ECHO !FILENAME!

输出是:

<filename>c:\temp\file1</filename>
The system cannot find the file specified.
ECHO is off.

我其实想要这个值c:\temp\file1

有人请帮我纠正代码或建议任何其他更简单的方法。

string batch-file for-loop substring delayedvariableexpansion
1个回答
2
投票

问题是set的执行。解析器将><解释为重定向,因此它将失败并出现语法错误。使用引号按预期处理它(`set“var = value”):

@echo off
setlocal enabledelayedexpansion
REM echo ^<filename^>c:\temp\file1^</filename^>>file1.props

::Expected line is "<filename>c:\temp\file1</filename>"

for /f "tokens=*" %%i in ('findstr /i "filename" file1.props') do (
    SET "LINE=%%i"
)

echo !LINE!

SET "FILENAME=!LINE:<filename>=!"
SET "FILENAME=%FILENAME:</filename>=%"
ECHO !FILENAME!

输出是:

<filename>c:\temp\file1</filename>
c:\temp\file1
© www.soinside.com 2019 - 2024. All rights reserved.