0

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

누군가가 나에게 코드를 수정 도와주세요 또는 다른 간단한 방법을 제안 해주십시오 값을합니다.

답변

2

문제는 set입니다. 구문 분석기는 ><을 리디렉션으로 해석하므로 구문 오류로 인해 실패합니다. (`설정 "VAR = 값") 의도 한대로이를 처리하기 위해 따옴표를 사용

@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