Windows定期タスクが同じ秒に起動すると片方が無音死する(隠しランナーの共有ログとcmd >> 排他)
result=1・ログ0行で死ぬ定期タスクの真因が、隠しランナーが全タスクのログを1ファイルに流し cmd の >> が排他で開くことだった件。再現手順・切り分け・ログ名分離と設置先の自己更新・同一秒起動テストまで
約17.1万トークンの節約 (API料金換算で約260円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「Windows定期タスクが同じ秒に起動すると片方が無音死する(隠しランナーの共有ログとcmd >> 排他)」は、業務自動化カテゴリのAI指示書(MDファイル)です。result=1・ログ0行で死ぬ定期タスクの真因が、隠しランナーが全タスクのログを1ファイルに流し cmd の >> が排他で開くことだった件。再現手順・切り分け・ログ名分離と設置先の自己更新・同一秒起動テストまでこの巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約17.1万トークン(API料金換算で約260円)・95%のトークンを節約できます。
- カテゴリ
- 業務自動化
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約18万トークン
- この巻物使用時
- 約9,000トークン
- 節約量
- 約17.1万トークン (約260円)
- 更新日
- 2026-09-03
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/windows-cmd/raw を読み込んで、この指示書どおりに実装して"
中身
Windows 定期タスクが「result=1・ログ0行」で無音死する — 隠しランナーの共有ログと cmd >> 排他の罠
症状
- タスクスケジューラの
Last Task Resultが0x1なのに、ジョブ本体(PowerShell / Node)のログには開始行すら無い - 失敗するのは決まった時刻で、同じ秒に別のタスクも起動している(毎時00分・x5分など)
- 毎時衝突する2本のうち、毎回どちらか1本だけが成功する
- Task Scheduler の Operational イベントログは無効になっていて、追えない
真因(再現手順つき)
コンソール窓を出さずにタスクを動かす定番 run-hidden.vbs(wscript.exe 経由)は、子プロセスを
cmd.exe /d /s /c "<子コマンド> >> <ログ> 2>&1" の形で起動する。ここに2つの罠が重なる。
- ログ名の決め方: 「2番目の引数の basename」をログ名にすると、
powershell.exe -NoProfile -File ...の形では 全タスクのログ名が-NoProfile.logになり、全タスクが1ファイルを共有する - cmd の
>>は書込共有を許さない: 先発の cmd がログを開いている間に後発の cmd が>>で開くと 「別のプロセスが使用中です」で cmd 自身が exit 1 になり、子(PowerShell/Node)は起動すらしない。 だから PowerShell 側の try/catch・Mutex・ログ書き込みリトライは一切効かない
再現(PowerShell):
$log = "$env:TEMP\collide.log"
Start-Process cmd -ArgumentList "/d /s /c `"`"powershell`" `"-NoProfile`" `"-Command`" `"Start-Sleep 6`" >> `"$log`" 2>&1`"" -WindowStyle Hidden
Start-Sleep -Milliseconds 1500
$p = Start-Process cmd -ArgumentList "/d /s /c `"`"cmd`" `"/c`" `"echo x`" >> `"$log`" 2>&1`"" -Wait -PassThru -WindowStyle Hidden -RedirectStandardError "$env:TEMP\collide.err"
$p.ExitCode # => 1
Get-Content "$env:TEMP\collide.err" # => プロセスはファイルにアクセスできません。別のプロセスが使用中です。
切り分け手順
Get-ScheduledTask | Get-ScheduledTaskInfoで LastRunTime が同じ秒のタスクを突合する(イベントログに頼らない)- ランナー(vbs/cmd)が共有しているファイル(ログ・pid・ロック)を洗う。
~\.claude\logs\-NoProfile.logのような 「フラグ名のログ」があれば確定 - 「main にマージ済みの修正」が設置先に届いているかを sha256 で比べる。ランナーは設置先(
~\tools\等)にコピーされて 動くことが多く、リポジトリ側を直しても設置先が旧版のまま、はよくある
直し方
- ランナーのログ名は対象スクリプト名(拡張子
.ps1/.mjs/.jsを持つ最初の引数。ラッパー自身は除外)から採るFor i = 1 To args.Count - 1 ext = LCase(fso.GetExtensionName(args(i))) If ext = "ps1" Or ext = "mjs" Or ext = "js" Then If LCase(fso.GetFileName(args(i))) <> "<ラッパー名>.ps1" Then baseName = fso.GetBaseName(args(i)) : Exit For End If End If Next - 設置先の更新経路を作る: 夜間同期ラッパーの自己更新に「ランナーも sha256 が違えば更新」を足す。
更新は
<設置先>.new-<PID>へコピー →Move-Item -Forceの原子置換(実行中の wscript は起動時に読み切っているので安全)。 設置先が無い PC では何もしない(勝手に新規設置しない)。更新失敗でも本体の実行は続ける(fail-open) - 検証は「衝突していた2タスクを
Start-ScheduledTaskで同一秒に起動し、両方 rc=0 かつ別ログに出る」ことで取る。 正常系1本の exit 0 では何も確かめられない
ついでに起きやすい別バグ
Windows PowerShell 5.1 で $x = $null; [datetime]::TryParse($s, [ref]$x) は MethodCountCouldNotFindBest で落ちる。
[datetime]$x = [datetime]::MinValue のように型付きで初期化する。$ErrorActionPreference = 'Stop' だとこれだけで exit 1 になる。
よくある質問
+「Windows定期タスクが同じ秒に起動すると片方が無音死する(隠しランナーの共有ログとcmd >> 排他)」とは何ですか?
result=1・ログ0行で死ぬ定期タスクの真因が、隠しランナーが全タスクのログを1ファイルに流し cmd の >> が排他で開くことだった件。再現手順・切り分け・ログ名分離と設置先の自己更新・同一秒起動テストまで
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約18万トークンかかりますが、この巻物を使えば約9,000トークンで済みます。差し引き約17.1万トークン(API料金換算で約260円)・95%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
Google Meet 自動参加&動画配信Bot 開発指示書
指定した時刻に Google Meet へ自動参加し、動画を再生しながら画面共有する Bot を、Claude Code に一発で作らせる開発指示 MD。朝会の定例動画配信・ウェビナーの自動放送に。
受信メール添付を案件フォルダへ自動取込するパイプライン
メールを読むアプリとドライブに書くアプリが別、という現実的な構成で顧客メールの添付を案件フォルダへ無人保存する設計。権限追加を避ける理由、実行時間制限下の予算3本立て、二重の重複防止、base64url/行数上限/変換判定などの実装罠、案件と顧客のマッチング、名寄せは候補提示+人の承認にする型まで。
Gmail 自動仕分け&返信ドラフト生成MD
受信メールを AI が分類 (要返信/情報/営業/スパム) してラベル付けし、要返信メールには返信ドラフトまで自動生成する仕組みを作らせる指示書。DWD (ドメイン全体委任) 設定手順込み。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア