批处理文件中的睡眠命令?

jay*_*yli 6 command-line batch-file psexec

当我编写批处理文件以自动运行时,如何编写它以便在批处理文件运行时,它可以在命令之间暂停几秒钟?

语境:

psexec \\server -u user -p pass cmd
[there needs to be a pause here for psexec to establish a connection]
dir /s >output.txt \\server\shared
Run Code Online (Sandbox Code Playgroud)

*注意:我使用psexec而不是本地运行dir命令服务器端的原因是因为在本地计算机上运行dir比远程运行dir要快得多,而且时间至关重要.

当我手动做这件事显然很容易,我只是等待.但是,运行批处理文件使其以接近彼此的即时速度运行所有命令,而不管最后一个命令的完成状态如何.我怎么暂停?

sof*_*llx 26

在Windows Vista/Windows 7上,您可以使用timeout命令:

timeout /T [delay in seconds] /NOBREAK > NUL
Run Code Online (Sandbox Code Playgroud)

在以前版本的Windows上,您可以使用ping命令(ping命令在每次迭代之间有1000毫秒的延迟):

ping -n [delay in seconds + 1] 127.0.0.1 > NUL
Run Code Online (Sandbox Code Playgroud)

某些版本的Windows(如Windows Server 2003)具有sleep.exe可执行文件:

sleep [delay in seconds]
Run Code Online (Sandbox Code Playgroud)

注意:2003年的Windows资源工具包包含sleep.exe命令.

如果你不知道Windows版本,只需使用ping hack,因为它可用.


man*_*lds 7

timeout在更新版本的Windows中有命令:

timeout /T 10
Run Code Online (Sandbox Code Playgroud)


sep*_*cal 2

我认为这里的信息: http: //malektips.com/xp_dos_0002.html会比我更好地解释它。

但仍然存在错误处理的情况(如果远程计算机没有启动怎么办?)。cmd.exe 在大多数情况下对于执行任何远程活动都是毫无用处的,使用 powershell 可以实现更多功能。

编辑::

事实上,您可以使用 psexec 执行本地存储的程序(它会在服务器端本地复制并执行) - 使用它会是一个更可行的替代方案吗?

如果不知道您打算运行什么命令,就很难进一步进行。

编辑(2)::

如果这只是您正在运行的一个命令,只需将其存储在一个专用文件中,例如“remote_dir_listing.cmd”,然后使用 psexec :

psexec \\server -u <user> -p <pass> -c -f remote_dir_listing.cmd
Run Code Online (Sandbox Code Playgroud)

每次执行时,这都会强制将本地文件的副本复制到远程端(以防您想扩展它)。通过这种方式,您完全不需要暂停 - 只有当 psexec 打开管道时它才会运行,一旦完成,它就会默默地关闭自己。