shell - 如何在批处理脚本中打印循环内的变量?

标签 shell loops batch-file

@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值 - 即 - 循环(或 block )运行之前的值。

ECHO %%E在这种情况下也会起作用(正如您在附加到 all...txt 时所使用的那样)

echo is off报告是由以下事实引起的 test 解析 for 命令时没有值,因此它被执行为 echo不带参数,生成错误状态报告。

如果你想回显一个可能为空的变量,利用 ECHO 中的一个怪癖通过使用

ECHO(%potentiallyemptyvar%

这里注意 (被视为 echo 的一部分命令 - 它不参与圆括号的嵌套......

关于shell - 如何在批处理脚本中打印循环内的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525681/

相关文章:

mysql - 批处理 mysql 脚本/计划运行批处理作业

javascript - 在 ES6 javascript 中检测 FOR OF 循环中的最后一次迭代

java - Android Java 处理程序在循环中的每个记录处发布延迟

python - IPython 内联!爆炸 shell 命令

linux - 编写Shell脚本以安装cron作业

c - c 中的循环问题?这里有什么问题?

windows - 批处理文件中 for 循环中关系运算符的用法

windows - 批量执行一个文件并继续运行

regex - 使用 sed 转义正则表达式

linux - crontab 命令分隔行