在Windows cmd脚本中添加计数器值

6

我的脚本类似于这样:

cd <Directory>
set counter = 1
for /r %%f in (*) do (
<Do task>
echo Task completed for file<counter> >> C:\log
counter++
)

我无法弄清楚如何使用实际的计数器counter值。如果我使用counter%counter%,它只是回显相同的字符串。在这种情况下,我应该如何修改counter行?

2个回答

7

SET必须与/A一起使用,如果您想评估数学表达式。还需要首先输入SETLOCAL ENABLEDELAYEDEXPANSION作为第一行来启用延迟扩展。在**FOR**循环内部的计算直到最后一次迭代发生时才会执行。但我修改了批处理文件,使计数器的值在每次迭代中递增。

SETLOCAL ENABLEDELAYEDEXPANSION

@echo off

set /a counter=1

for /r %%f in (*) do (
  echo Task Completed for file !counter! >> c:\log
  set /a counter=!counter!+1
)

谢谢。我懂得了循环,但是对于 SETLOCAL ENABLEDELAYEDEXPANSION 我不确定。当我尝试时,它显示“访问被拒绝”。 - Jay

0

SET /A 变量_数字 数学符号= 步骤数

set /a 变量_数字+=1 -> 数字_变量 = 数字_变量 + 1 (步骤)

set /a 变量_数字-=1 -> 数字_变量 = 数字_变量 - 1 (步骤)

set /a 变量_数字*=2 -> 数字_变量 = 数字_变量 x 2 (步骤)

set /a 变量_数字/=2 -> 数字_变量 = 数字_变量 : 2 (步骤)

在循环中:

@echo off
set counter=0
:start-loop

set /a counter+=1

echo %counter% times... 
:: or/and
echo %counter% times... >> %USERPROFILE%\Desktop\log.txt

timeout /t 1 >nul
goto :start-loop

你的例子:(在“FOR”循环中)

SETLOCAL ENABLEDELAYEDEXPANSION
@echo off
set /a counter=1

for /r %%f in (*) do (
  echo Task Completed for file !counter! >> C:\log.txt
  echo Path to File: [ %%f ] >> C:\log.txt
  set /a counter+=1
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接