Windows批处理文件中单行上的多个命令

Rag*_*ram 104 windows batch-file

在Unix中,我们可以将多个命令放在一行中,如下所示:

$ date ; ls -l ; date
Run Code Online (Sandbox Code Playgroud)

我在Windows中尝试过类似的东西:

 > echo %TIME% ; dir ; echo %TIME
Run Code Online (Sandbox Code Playgroud)

但它打印时间并且不执行命令dir.

我怎样才能做到这一点?

pax*_*blo 173

使用:

echo %time% & dir & echo %time%
Run Code Online (Sandbox Code Playgroud)

这是从内存中,等同于bash其他UNIXy shell中的分号分隔符.

还有&&(或||)只在第一个成功(或失败)时执行第二个命令,但是单个&符号&是你在这里寻找的.


然而,这可能会给你相同的时间,因为环境变量倾向于在读取而不是执行时进行评估.

你可以通过启用延迟扩展来解决这个问题:

pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85
Run Code Online (Sandbox Code Playgroud)

这是从命令行需要的.如果您在脚本中执行此操作,则可以使用setlocal:

@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal
Run Code Online (Sandbox Code Playgroud)

  • 我倾向于使用`time/t`(或`echo.| time`)代替`echo%time%`来规避问题. (3认同)