もくじ
📝 はじめに
PowerShellでスクリプトを実行していて、
「次の処理まで少し待ちたい」
「連続処理の間に間隔を入れたい」
と感じたことはありませんか?
たとえば、ファイル生成を待ってから次の処理をしたい場合や、
繰り返し処理で負荷をかけすぎないよう間隔を空けたい場合など、
処理を一時的に止めたい場面は意外と多くあります。
そんなときに使うのが Start-Sleep です。
- 処理と処理の間に待ち時間を入れたい
- ループ処理で実行間隔を調整したい
- 外部処理やファイル生成を待ちたい
✅ このコマンドでできること(要点)
- 指定した時間だけ処理を一時停止できる
- 秒・ミリ秒単位で待機時間を指定できる
- ループや自動化処理と組み合わせやすい
- コードを分かりやすく書ける
✅ Start-Sleep でできること
Start-Sleep は、
指定した時間だけ PowerShell の処理を停止(待機)させるためのコマンドです。
処理を完全に終了するわけではなく、
一定時間待ってから次の行へ進む動きをします。
バッチ処理や自動化スクリプトでは定番の考え方です。
似た用途としては「時間を空けてから次の処理を実行する」という考え方になります。
🧩 基本構文
Start-Sleep -Seconds 5
上記の場合、5秒間処理が停止してから次の行へ進みます。
秒指定が最もよく使われます。
▶ 基本的な使い方(まずこれだけ)
🔹 秒単位で一時停止する
Write-Output "開始"
Start-Sleep -Seconds 3
Write-Output "再開"
「開始」が表示されたあと、3秒待ってから「再開」が表示されます。
この順番で表示されていれば問題ありません。
🔹 ミリ秒単位で待機する
Start-Sleep -Milliseconds 500
0.5秒だけ待機します。
短い間隔で制御したい場合に使えます。
エラーが出なければ正常に実行できています。
🛠 よく使われる指定例
🔹 変数で待機時間を指定する
$wait = 10
Start-Sleep -Seconds $wait
待ち時間を変数にしておくと、後から調整しやすくなります。
🔹 ループ処理と組み合わせる
1..3 | ForEach-Object {
Write-Output "処理中..."
Start-Sleep -Seconds 2
}
各処理の間に2秒の間隔が入ります。
処理が一定間隔で繰り返されていればOKです。
💼 実務でよく使う使用例(応用)
🔹 ファイル生成を待ってから処理する
Start-Sleep -Seconds 5
Get-Item "C:\temp\result.txt"
🔹 定期処理の簡易待機
while ($true) {
Get-Date
Start-Sleep -Seconds 60
}
- Start-Process 後の待機に使う
- Test-Path と併用して存在確認まで待つ
- Get-Date と組み合わせてログを取る
🧩 よくある勘違い・つまずきポイント
- 指定時間中は完全に処理が止まる
- 非同期処理にはならない
- 分単位の指定は直接できない
- 長時間の待機には不向きな場合がある
- スクリプト全体が待機状態になる
🔄 cmdとの違いについて
cmd では timeout /t や
ping -n を使って待機処理を行います。
PowerShell の Start-Sleep は
秒・ミリ秒を明示的に指定でき、読みやすい点が特徴です。
⚠ エラー・うまく動かないときの確認ポイント
- 待機時間の単位(Seconds / Milliseconds)を間違えていないか
- 負の値や想定外の値を指定していないか
- 長時間待機で止まっているように見えていないか
- 無限ループ内で使っていないか
🧠 注意点
Start-Sleep は単純に待つだけのため、
状態を監視しながら待ちたい場合には向いていません。
必要に応じて条件判定と組み合わせて使うのがおすすめです。
📌 まとめ
- Start-Sleep は処理を一時停止するための基本コマンド
- 秒・ミリ秒単位で待機時間を指定できる
- ループや自動化処理と相性が良い
- 次は条件待機やループ制御と組み合わせると理解が深まる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 一定時間待って処理したい
- 処理間隔を調整したい
