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 
関連する問題