我试图从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
有人请帮我纠正代码或建议任何其他更简单的方法。
问题是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