6

自動的に実行するバッチ ファイルを作成する場合、バッチ ファイルの実行時にコマンド間で数秒間一時停止できるようにするにはどうすればよいですか?

環境:

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

*注: ローカルではなく psexec を使用してサーバー側で dir コマンドを実行する理由は、リモートで実行するよりもローカル マシンで dir を実行する方がはるかに高速であり、時間が重要であるためです。

これを手作業で行っているときは、明らかに簡単です。待つだけです。しかし、バッチ ファイルを実行すると、最後のコマンドの完了ステータスに関係なく、すべてのコマンドがほぼ瞬時に実行されます。一時停止するにはどうすればよいですか?

4

4 に答える 4

7

timeout最近のバージョンの Windows には次のコマンドがあります。

timeout /T 10
于 2011-10-31T19:26:52.873 に答える
3

2003 用の Windows リソース キットは、Windows XP にインストールされます。コマンド バッチ ファイルから使用できる SLEEP.EXE が含まれています。

ダウンロードはこちらhttp://www.microsoft.com/download/en/details.aspx?id=17657

于 2011-10-31T19:10:26.903 に答える
2

ここの情報:http://malektips.com/xp_dos_0002.htmlは私よりもそれをよりよく説明すると思います。

ただし、エラー処理の場合はまだあります(リモートマシンが起動していない場合はどうなりますか?)。cmd.exeは、ほとんどの場合、リモートアクティビティを実行するのにまったく役に立ちません。PowerShellを使用すると、さらに多くのことが可能になります。

編集::

実際、psexecを使用してローカルに保存されたプログラムを実行できます(サーバー側でコピーされてローカルで実行されます)-それを使用する方がより実行可能な代替手段でしょうか?

実行しようとしているコマンドがわからないと、それをさらに進めるのは困難です。

EDIT(2)::

実行しているコマンドが1つだけの場合は、「remote_dir_listing.cmd」などの専用ファイルに保存してから、psexecを次のように使用します。

psexec \\server -u <user> -p <pass> -c -f remote_dir_listing.cmd

これにより、実行するたびにローカルファイルのコピーがリモート側に強制的に送信されます(拡張する場合)。このようにして、一時停止の必要性を完全に回避します。psexecがパイプを開いた場合にのみ実行され、完了すると、サイレントに閉じます。

于 2011-10-31T18:58:57.910 に答える