「sleep.exe」というファイル名を聞いたことはありますか?
これは、かつてWindows Resource Kitに含まれていたコマンドラインツールです。
バッチファイルで一定時間待機する機能を提供していました。
現在のWindows環境では使用することはほとんどありませんが、古いバッチファイルやスクリプトで見かけることがあります。
この記事では、sleep.exeの歴史、使い方、そして現代のWindowsでの代替手段を詳しく解説します。
sleep.exeとは

sleep.exeは、Windowsのバッチファイルやスクリプトで指定した時間だけ処理を待機(スリープ)させるためのツールです。
Linuxの「sleep」コマンドと同様の機能を持ちます。
マイクロソフトがWindows Resource Kitの一部として配布していました。
歴史的背景
Windows 2000以前:
- Windowsには標準で待機コマンドがありませんでした
- Resource Kitに含まれるsleep.exeを別途インストールする必要がありました
Windows XP/2003時代:
- Windows Server 2003 Resource Kitにsleep.exeが含まれていました
- システム管理者の間で広く使われていました
Windows Vista以降:
- TIMEOUTコマンドが標準搭載されました
- sleep.exeの必要性が低下しました
現在:
- Resource Kitのダウンロードリンクは無効になっています
- 既存のsleep.exeは動作しますが、推奨されません
Resource Kit版sleep.exeの特徴
基本情報
提供元:
- Microsoft Windows Resource Kit
含まれていたバージョン:
- Windows 2000 Resource Kit
- Windows XP Resource Kit
- Windows Server 2003 Resource Kit
ファイルサイズ:
- 約4〜5KB(非常に小さい)
対応OS:
- MS-DOS 5.x以降
- すべてのWindowsバージョン(32bit)
基本的な使い方
sleep 秒数
非常にシンプルな構文です。
引数として待機する秒数を指定するだけです。
使用例
5秒間待機:
sleep 5
30秒間待機:
sleep 30
バッチファイルでの使用例:
@echo off
echo 処理1を実行中...
rem 何か処理
sleep 10
echo 処理2を実行中...
rem 次の処理
特徴と制限
メリット:
- 使い方が非常にシンプル
- 軽量で高速
- Unix系OSのsleepコマンドと同じ構文
デメリット:
- 標準では含まれていない(Resource Kitのインストールが必要)
- キー入力で中断できない
- 秒単位でしか指定できない(ミリ秒指定不可)
- メッセージが表示されない(待機中であることが分かりにくい)
sleep.exeの入手方法
現在、公式のダウンロード方法は限られています。
1. Windows Resource Kitから抽出
注意: マイクロソフトの公式ダウンロードリンクは既に無効です。
かつては以下のURLからダウンロードできました:
- Windows Server 2003 Resource Kit Tools
現在は、Internet Archiveなどのアーカイブサイトで入手可能な場合があります。
インストール手順(かつての方法):
- rktools.exeをダウンロード
- 実行してインストール
- デフォルトのインストール先:
C:\Program Files\Windows Resource Kits\Tools
または
C:\Program Files (x86)\Windows Resource Kits\Tools
- このフォルダにsleep.exeが含まれます
2. サードパーティ製sleep.exe
Vector(日本のソフトウェア配布サイト)などで、独立したsleep.exeが配布されています。
特徴:
- 32bitコンソールアプリケーション
- 秒単位での待機指定
- 誤差: 約0.015秒
- インストール不要
- レジストリ変更なし
使用方法:
- sleep.exeをダウンロード
- 任意のフォルダに配置
- バッチファイルから実行
3. 自作のsleep.exe
プログラミング知識があれば、自分でsleep.exeを作成できます。
C言語の例:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: sleep <seconds>\n");
return 1;
}
int seconds = atoi(argv[1]);
if (seconds <= 0) {
printf("Error: Invalid number\n");
return 1;
}
Sleep(seconds * 1000);
return 0;
}
このプログラムをコンパイルすれば、sleep.exeが作成できます。
注意: セキュリティリスク
重要: 信頼できないソースからsleep.exeをダウンロードしないでください。
理由:
- マルウェアやウイルスが含まれている可能性
- 悪意のあるコードが実行される危険性
- システムが破損する恐れ
安全な方法:
- 公式のResource Kitを使用(入手可能な場合)
- TIMEOUTコマンドなどの標準ツールを使用
- 信頼できるベクターなどからダウンロード
sleep.exeに関する問題

実際のPCでsleep.exeに遭遇した場合、いくつかの可能性があります。
1. 正規のResource Kit版sleep.exe
場所:
C:\Program Files\Windows Resource Kits\Tools\sleep.exe
または
C:\Program Files (x86)\Windows Resource Kits\Tools\sleep.exe
ファイルサイズ: 約4,880バイト
デジタル署名: Microsoft
これは安全なファイルです。
2. 不正なsleep.exe
警告サイン:
- ユーザーフォルダ内に存在:
C:\Users\USERNAME\AppData\Local\
- ファイルサイズが大きい(18,000バイト以上)
- デジタル署名がない
- Windowsフォルダ内の不自然な場所
危険度評価:
- ユーザーフォルダ内: 75%危険
- Windowsフォルダ内: 50%危険
確認方法
ファイルの場所を確認:
where sleep.exe
プロパティを確認:
- sleep.exeを右クリック
- 「プロパティ」を選択
- 「デジタル署名」タブを確認
- 署名者がMicrosoftであることを確認
ウイルススキャン:
"C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File "C:\path\to\sleep.exe"
対処方法
不審なsleep.exeを発見した場合:
- すぐに削除しない(マルウェアが復活する可能性)
- ウイルススキャンを実行
- セキュリティソフトで完全スキャン
- 必要に応じてマルウェア除去ツールを使用
現代のWindowsでの代替手段
sleep.exeの代わりに、以下の方法を使用することをおすすめします。
1. TIMEOUTコマンド(推奨)
Windows Vista以降で標準搭載されている最も良い代替手段です。
基本的な使い方:
timeout /t 10
キー入力を無視:
timeout /t 10 /nobreak
メッセージを非表示:
timeout /t 10 /nobreak > nul
sleep.exeとの比較:
| 項目 | sleep.exe | TIMEOUT |
|---|---|---|
| 標準搭載 | ✗ | ✓ (Vista以降) |
| キー入力で中断 | ✗ | ✓ (デフォルト) |
| メッセージ表示 | ✗ | ✓ |
| 無期限待機 | ✗ | ✓ (/t -1) |
| インストール不要 | ✗ | ✓ |
移行例:
sleep.exeを使用:
sleep 10
TIMEOUTに置き換え:
timeout /t 10 /nobreak > nul
2. PowerShellのStart-Sleep
PowerShellを使用できる環境では、Start-Sleepが便利です。
秒単位:
Start-Sleep -Seconds 10
ミリ秒単位:
Start-Sleep -Milliseconds 500
バッチファイルから実行:
powershell -Command "Start-Sleep -Seconds 10"
メリット:
- ミリ秒単位で指定可能
- より正確な待機時間
- PowerShellの他の機能と組み合わせやすい
デメリット:
- PowerShellの起動に時間がかかる(1秒未満)
- sleep.exeより重い
3. PINGコマンドの裏技
古いWindows(XP以前)で使われていた方法です。
方法1: タイムアウトを利用:
ping -n 1 -w 5000 192.0.2.1 > nul
-n 1: 1回だけ送信-w 5000: タイムアウト5000ミリ秒192.0.2.1: 存在しないIPアドレス
これで約5秒待機します。
方法2: ローカルホストを利用:
ping -n 11 127.0.0.1 > nul
-n 11: 11回送信- 1回目は即座に返る
- 残り10回で約10秒
これで約10秒待機します。
デメリット:
- 正確な時間が指定しにくい
- PINGが無効化されていると動作しない
- 不自然な方法
現在では非推奨:
TIMEOUTコマンドを使用してください。
4. CHOICEコマンド
選択肢を提示するコマンドのタイムアウト機能を利用します。
choice /t 5 /d y /n > nul
/t 5: 5秒後にタイムアウト/d y: デフォルトで「y」を選択/n: 選択肢を表示しない
デメリット:
- 本来の用途と異なる
- TIMEOUTの方が直感的
5. VBScriptを使用
VBScriptのSleepメソッドを使う方法です。
sleep.vbsファイルを作成:
WScript.Sleep(WScript.Arguments(0) * 1000)
バッチファイルから実行:
cscript //nologo sleep.vbs 10
これで10秒待機します。
メリット:
- ミリ秒単位で指定可能
- すべてのWindowsで動作
デメリット:
- 別ファイルが必要
- TIMEOUTより複雑
6. 独自ツールの使用
millisleep.exe:
- ミリ秒単位で待機できる独自ツール
- オープンソースで公開されている
millisleep 5000
これで5000ミリ秒(5秒)待機します。
実際の移行例
古いバッチファイルを現代のWindowsに対応させる例を紹介します。
例1: 基本的な待機
古いバッチファイル(sleep.exe使用):
@echo off
echo データベースのバックアップを開始します
backup.exe
echo バックアップ完了
sleep 5
echo サービスを再起動します
net start MyService
新しいバッチファイル(TIMEOUT使用):
@echo off
echo データベースのバックアップを開始します
backup.exe
echo バックアップ完了
timeout /t 5 /nobreak > nul
echo サービスを再起動します
net start MyService
例2: ループ処理での待機
古いバッチファイル:
@echo off
:loop
ping server01 -n 1 > nul
if errorlevel 1 (
echo サーバーが応答しません。再試行します...
sleep 30
goto loop
)
echo サーバーが起動しました
新しいバッチファイル:
@echo off
:loop
ping server01 -n 1 > nul
if errorlevel 1 (
echo サーバーが応答しません。再試行します...
timeout /t 30 /nobreak > nul
goto loop
)
echo サーバーが起動しました
例3: 複数の待機を含む処理
古いバッチファイル:
@echo off
echo アプリケーションを起動します
start "" "C:\Program Files\MyApp\app.exe"
sleep 10
echo データを読み込みます
importdata.exe
sleep 5
echo 処理を開始します
process.exe
新しいバッチファイル:
@echo off
echo アプリケーションを起動します
start "" "C:\Program Files\MyApp\app.exe"
timeout /t 10 /nobreak > nul
echo データを読み込みます
importdata.exe
timeout /t 5 /nobreak > nul
echo 処理を開始します
process.exe
よくある質問
Q1: sleep.exeは今でも使えますか?
はい、ファイルがあれば使用できます。
ただし、以下の理由から推奨されません:
- 標準で含まれていない
- 入手が困難
- TIMEOUTコマンドで十分
新しいスクリプトではTIMEOUTコマンドを使用してください。
Q2: Resource Kitはどこからダウンロードできますか?
マイクロソフトの公式ダウンロードリンクは既に無効です。
代替手段:
- Internet Archiveで検索
- TIMEOUTコマンドを使用(推奨)
- サードパーティ製のsleep.exeを使用
Q3: sleep.exeとTIMEOUTの違いは何ですか?
主な違い:
sleep.exe:
- キー入力で中断不可
- メッセージ表示なし
- シンプルな構文
- 別途インストールが必要
TIMEOUT:
- キー入力で中断可能(オプションで無効化可能)
- 待機中のメッセージを表示
- より多機能
- Windows Vista以降で標準搭載
機能的にはTIMEOUTの方が優れています。
Q4: 古いバッチファイルを修正する必要がありますか?
必須ではありませんが、推奨されます。
理由:
- sleep.exeが存在しない環境で動作しない
- 保守性が向上する
- 標準コマンドの方が信頼性が高い
移行は簡単:
# 変更前
sleep 10
# 変更後
timeout /t 10 /nobreak > nul
Q5: ミリ秒単位で待機したい場合は?
sleep.exeは秒単位でしか指定できません。
ミリ秒対応の代替手段:
PowerShell:
Start-Sleep -Milliseconds 500
VBScript:
WScript.Sleep(500)
独自ツール:
- millisleep.exe
Q6: sleep.exeがマルウェアかどうか確認するには?
確認手順:
- ファイルの場所を確認
where sleep.exe
正規の場所:
C:\Program Files\Windows Resource Kits\Tools\
- デジタル署名を確認
- ファイルを右クリック→プロパティ
- デジタル署名タブでMicrosoftの署名を確認
- ウイルススキャン
"C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File "パス\sleep.exe"
- ファイルサイズを確認
- 正規版: 約4〜5KB
- 大きすぎる場合は不審
Q7: Windows 11でsleep.exeは動作しますか?
32bit版のsleep.exeは、64bit版Windows 11でも動作する可能性があります。
ただし:
- 公式サポート対象外
- 動作保証なし
- TIMEOUTコマンドの使用を推奨
セキュリティ上の注意
sleep.exeを使用する際は、セキュリティに注意してください。
1. 正規のファイルを使用
安全な入手方法:
- 公式のResource Kit(入手可能な場合)
- 信頼できるソフトウェア配布サイト
- 自分でコンパイル
危険な方法:
- 不明なウェブサイトからダウンロード
- P2Pネットワークから入手
- メールの添付ファイル
2. ファイルの検証
ダウンロード後:
- ウイルススキャンを実行
- デジタル署名を確認
- ファイルサイズを確認
- ハッシュ値を比較(可能な場合)
3. 実行権限の管理
sleep.exeには管理者権限は不要です。
管理者権限を要求する場合、不正なファイルの可能性があります。
4. 定期的なスキャン
システムにsleep.exeが存在する場合:
- 定期的にウイルススキャン
- 不審な動作がないか監視
- 使用していない場合は削除を検討
まとめ
sleep.exeについての要点をまとめます。
sleep.exeとは
- Windows Resource Kitに含まれていたツール
- バッチファイルで一定時間待機する機能
- Linuxのsleepコマンドと同等
- 現在は入手困難
使い方
基本構文:
sleep 秒数
例:
sleep 10 # 10秒待機
現代での代替手段
推奨: TIMEOUTコマンド
timeout /t 10 /nobreak > nul
その他の方法:
- PowerShellのStart-Sleep
- PINGコマンド(非推奨)
- CHOICEコマンド
- VBScript
移行ガイド
sleep.exeからTIMEOUTへ:
| sleep.exe | TIMEOUT |
|---|---|
sleep 5 | timeout /t 5 /nobreak > nul |
sleep 30 | timeout /t 30 /nobreak > nul |
sleep 60 | timeout /t 60 /nobreak > nul |
セキュリティ
- 信頼できるソースからのみ入手
- デジタル署名を確認
- 定期的にスキャン
- 不審なsleep.exeは削除
結論
sleep.exeは過去のツールです。
現在のWindows環境では:
- TIMEOUTコマンドを使用(最優先)
- PowerShellのStart-Sleepを使用(ミリ秒指定が必要な場合)
- sleep.exeは使用しない
古いバッチファイルは、TIMEOUTコマンドに移行することを強くおすすめします。
移行は簡単で、互換性も高く、メンテナンス性が向上します。
新しいスクリプトでは、絶対にsleep.exeを使用しないでください。
標準コマンドを活用することで、より安全で保守しやすいスクリプトを作成できます。


コメント