2014-05-07 149 views
1
@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 


) 

在上面的腳本中,我嘗試在循環中打印測試,顯示ECHO IS OFF。 我想打印測試變量如何在批處理腳本中打印變量內循環?

感謝

+1

這**不是** Bash腳本。 Bash是一個* NIX shell而不是DOS/Windows。以上是DOS/Windows批處理文件。 – Leptonator

回答

1

我認爲你缺少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 
) 
+1

我又來了!測試!只有測試沒有價值 – Suresh

2
@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報告是由事實test沒有價值當對命令進行解析所以它引起的作爲echo執行,不帶參數,這會生成錯誤狀態報告。

如果你想呼應一個變量可能是空的,利用在ECHO怪癖通過這裏使用

ECHO(%potentiallyemptyvar% 

注意,(被視爲echo命令的一部分 - 它在沒有參與嵌套的圓括號...

相關問題