[英]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.