Windows Vista からはTIMEOUTコマンドとSLEEPコマンドがありますが、Windows XP または Windows Server 2003 でそれらを使用するには、Windows Server 2003 リソース ツール キットが必要です。
ここでは、スリープの代替手段の概要を説明しています (すべての Windows マシンで動作するため、ping アプローチが最も一般的です)。ただし、(少なくとも) W32TM
(Time Service) コマンドを (ab) 使用する言及されていないものがあります。
w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:N >nul 2>&1
N を一時停止する秒数に置き換えます。また、前提条件なしですべての Windows システムで動作します。
Typeperf も使用できます。
typeperf "\System\Processor Queue Length" -si N -sc 1 >nul
mshta と javascript の場合 (1 秒未満のスリープに使用できます):
start "" /wait /min /realtime mshta "javascript:setTimeout(function(){close();},5000)"
これはさらに正確なはずです(1秒未満で待機するため)-依存する自己コンパイル実行可能ファイル.net
:
@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal
::del %~n0.exe /q /f
::
:: For precision better call this like
:: call waitMS 500
:: in order to skip compilation in case there's already built .exe
:: as without pointed extension first the .exe will be called due to the ordering in PATEXT variable
::
::
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
set "jsc=%%v"
)
if not exist "%~n0.exe" (
"%jsc%" /nologo /w:0 /out:"%~n0.exe" "%~dpsfnx0"
)
%~n0.exe %*
endlocal & exit /b %errorlevel%
*/
import System;
import System.Threading;
var arguments:String[] = Environment.GetCommandLineArgs();
function printHelp(){
Console.WriteLine(arguments[0]+" N");
Console.WriteLine(" N - milliseconds to wait");
Environment.Exit(0);
}
if(arguments.length<2){
printHelp();
}
try{
var wait:Int32=Int32.Parse(arguments[1]);
System.Threading.Thread.Sleep(wait);
}catch(err){
Console.WriteLine('Invalid Number passed');
Environment.Exit(1);
}