1

我正在尝试编写一个批处理文件,该文件需要花费命令的时间并将其转换为小时、分钟和秒。

这是我所拥有的:

@echo off

set /a sec=0
set /a min=0
set /a hrs=0
for /f %%G in ('ping localhost -n 100 >nul') do (
    ping localhost -n 1 >nul
    set /a sec+=1
    if %sec%==60 ( 
        set /a min+=1
        set /a sec=0
    )
    if %min%==60 (
        set /a hrs+=1
        set /a min=0
    ) 
)
echo Time taken: %hrs%:%min%:%sec%.

我一直收到一个“),此时是出乎意料的。” 错误。FOR 循环肯定有效,问题只是 IF 语句。

我尝试使用 EQU 运算符并添加引号无济于事。有人可以帮忙吗?

另外,我在某处读到 set 运算符可能无法在 IF 语句下工作 - 这是真的吗?

4

1 回答 1

0

您需要在批处理文件的顶部使用它

setlocal enabledelayedexpansion

以及!sec!and!min!语法,而不是 using%在循环中更改和使用变量。

如果没有延迟扩展,您将无法在循环中使用 set 更改变量,也无法在同一循环或嵌套循环集中使用该变量。

于 2014-04-30T15:34:28.553 回答