【发布时间】:2016-12-24 18:33:53
【问题描述】:
我正在处理的批处理文件中有一个简单的 for 循环,但我无法正确扩展变量。整个脚本如下..
setlocal enabledelayedexpansion
set track=0
FOR /f "tokens=2" %%G IN ('find "PhysicalTrackNumber" %1') DO if %track% LSS %%G set track=%%G
echo %track%
echo %1
pause
for 命令提取所有具有物理轨道号的行,我只是想获得最大的数字。 IT 在比较时始终保持为 0。我试过了!!也围绕我的变量,但是脚本似乎做了一些完全不同的事情。我认为它会采用新变量。
将输出与之前的输出进行比较并获得最大的数字时,我缺少什么?
【问题讨论】:
-
您需要delayed expansion,因为您在像
for循环这样的代码块中写入和读取相同的变量... -
请告诉我们您是如何尝试使用感叹号为您的变量使用延迟扩展的。
-
{FOR /f "tokens=2" %%G IN ('find "PhysicalTrackNumber" %1') DO (if !track! LSS %%G set track=%%G)}以上是我添加感叹号的方式。因为那是我想成为最大的价值。但它完全改变了脚本的工作方式,甚至不比较数字,所以我一定做错了,但我不能完全让语法正常工作。 -
我发现如果使用 !track!,然后我发现我的最终回显输出如何显示 %track% 实际上已成为参数。所以 echo %track% 实际上显示的是 %1 输出
标签: batch-file if-statement for-loop