[英]How to Print Variable inside loop in batch script?
@ECHO OFF
set /A q=0
for /F "tokens=*" %%E IN ('findstr /n /r "Finshed With Errors" D:\DataUploadUtil\UploadStatus\TariffUploadLog.txt') do (
set array[!q!]=%%E
set /A q=q+1
echo %%E >>D:\DataUploadUtil\UploadStatus\AllTariffsUploadStatus.txt
set test=%%E
echo %test% ::error
)
在上面的腳本中,我嘗試在循環中打印測試它的 Showing ECHO IS OFF。 我想打印測試變量
謝謝
@ECHO OFF
setlocal enabledelayedexpansion
set /A q=0
for /F "tokens=*" %%E IN (
'findstr /n /r "Finshed With Errors" D:\DataUploadUtil\UploadStatus\TariffUploadLog.txt'
) do (
set array[!q!]=%%E
set /A q=q+1
echo %%E >>D:\DataUploadUtil\UploadStatus\AllTariffsUploadStatus.txt
set test=%%E
echo !test!
)
你需要setlocal enabledelayedexpansion
來調用delayedexpansion
模式,其中!var!
是var
的運行時值。 %var%
始終是parse-time
值 - 即 - 循環(或塊)運行之前的值。
ECHO %%E
也適用於此實例(因為您已經使用了all...txt
。)
echo is off
報告是由於在解析for命令時 test
沒有值,因此它作為沒有參數的echo
執行,這會生成錯誤狀態報告。
如果要回顯可能為空的變量,請使用ECHO
的怪癖
ECHO(%potentiallyemptyvar%
請注意這里(
被視為echo
命令的一部分 - 它在圓括號的嵌套中不起作用...
我認為你缺少SETLOCAL / ENDLOCAL線..任何時候你使用! 在變量中,您需要使用SETLOCAL ..%用於標准批處理。
@ECHO OFF
SETLOCAL enabledelayedexpansion
set /A q=0
for /F "tokens=*" %%E IN ('findstr /n /r "Finshed With Errors" D:\DataUploadUtil\UploadStatus\TariffUploadLog.txt') do (
set array[!q!]=%%E
set /A q=q+1
echo %%E >>D:\DataUploadUtil\UploadStatus\AllTariffsUploadStatus.txt
set test=%%E
echo !test! ::error
ENDLOCAL
)
您需要做的就是在關閉大括號后添加術語“ENDLOCAL”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.