【问题标题】:Add counter value in Windows cmd script在 Windows cmd 脚本中添加计数器值
【发布时间】:2012-11-06 01:14:58
【问题描述】:

我的脚本与此类似:

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 行?

【问题讨论】:

    标签: windows command-line


    【解决方案1】:

    如果要计算数学表达式,SET 必须与 /A 一起使用。您还需要首先通过键入SETLOCAL ENABLEDELAYEDEXPANSION 作为第一行来启用延迟扩展。在最后一次迭代发生之前,**FOR** 循环内的评估不会完成。但是我修改了批处理文件,使 Counter 的值在每次迭代中递增。

    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。当我尝试它时,它说Access is Denied
    【解决方案2】:

    SET /A Variable_Number Math_symbol = Step(s)

    set /a Var_Num+=1 -> Num_Var = Num_Var + 1(步数)

    set /a Var_Num-=1 -> Num_Var = Num_Var - 1(步)

    set /a Var_Num*=2 -> Num_Var = Num_Var x 2(步数)

    set /a Var_Num/=2 -> Num_Var = Num_Var : 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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多