trash-area.com ≫ blog ≫ プログラミング ≫ DOS ≫ WindowsXP標準機能だけでスリープ(コマンド)の実装
unix とかにある sleep コマンドです。
なんで windowsはついてないんでしょうね。
VCがあるならコレだけで済むところをどうにかしようというわけです。
int main(int argc, char* argv[]) { long wait = atol(argv[1]) * 1000; Sleep( wait ); return 0; } |
DOSコマンドのみでやるとこんな感じ。
sleep.bat としてパスが通ったトコに配置して下さい。
@echo off for /l %%i in (1,1,%1) do @ping localhost -n 2 > nul |
あとはコマンドラインなりなんなりから sleep 10 とやれば約10秒sleepしてくれます。
ぶっちゃけ 3秒(くらい)スリープさせたいだけならわざわざバッチファイルなんて作らなくても
ping localhost -n 2 > nul
ping localhost -n 2 > nul
ping localhost -n 2 > nul
と3行書けばいいだけなのでこれが一番好きです。
WSH(VBS)ならこんな感じ。
sleep.vbs として以下略。
call WScript.Sleep(WScript.Arguments(0)*1000) |
ただ、これの場合は cscript.exe で叩かないといけないのでちとめんどいです。
もしくは start /wait sleep 10 とか。
ただこっちのがスリープする時間は正確だと思います。
DOS+WSH(JScript)版。
sleep.bat として保存します。(sleep.js ではありません)
@set @temp=0/* @echo off cscript.exe //e:jscript //nologo "%~f0" %1 goto :eof */ WScript.Sleep(WScript.Arguments(0)*1000); |
先ほどの wscript.exe で動かされるとスリープしてくれないのを解決します。
バッチファイルからテンポラリファイル作って~っていうのがいやなのでこんな感じに。
JScriptの条件コンパイルの構文を利用してDOSコマンド部分をコメントアウトしています。
で、バッチファイルの中で cscript で起動しなおしてあげています。
コマンドプロンプトでスリープする真っ当な方法…
ネット上を探すとpingやVBScriptを使うという情報が多かったのですが、Vista以降であればコマンドプロンプトで正式に対応されています。…
2010.03.16 @ 12:43 AM
echo 3秒待つ。
call :sleep 3
exit
:sleep
for /l %%i in (1,1,%1) do @ping localhost -n 2 > nul
exit /b
2010.03.19 @ 7:23 PM
ping localhost -n %1 > nul
だけで良いのではないでしょうか?
http://kgo.dtiblog.com/blog-entry-23.html
2010.04.20 @ 12:03 AM
みなさま情報ありがとうございます。
> ほげさん
> 通りすがり さん
まさしくそのとおりですね 笑
ping /? もしなかった自分がお恥ずかしいです。
ぜんぜん関係無いのですが、batファイルの for文っていつまでたっても慣れないです。