我的脚本类似于这样:
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
行?
我的脚本类似于这样:
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
行?
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
)
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
)
SETLOCAL ENABLEDELAYEDEXPANSION
我不确定。当我尝试时,它显示“访问被拒绝”。 - Jay