Windows の .cmd に日本語コメントを書くと REM 断片が命令として実行される(ASCII only で防ぐ・判定はコンソール行数)
タスクスケジューラ用の .cmd/.bat に日本語 REM があると cmd.exe が行の断片を命令として実行する。chcp を先頭に移しても直らない。ASCII only にし、非 ASCII 数とコンソール出力行数の2判定で機械確認する手順とテンプレート。
約5,100トークンの節約 (API料金換算で約8円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「Windows の .cmd に日本語コメントを書くと REM 断片が命令として実行される(ASCII only で防ぐ・判定はコンソール行数)」は、開発プロセスカテゴリのAI指示書(MDファイル)です。タスクスケジューラ用の .cmd/.bat に日本語 REM があると cmd.exe が行の断片を命令として実行する。chcp を先頭に移しても直らない。ASCII only にし、非 ASCII 数とコンソール出力行数の2判定で機械確認する手順とテンプレート。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約5,100トークン(API料金換算で約8円)・85%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約6,000トークン
- この巻物使用時
- 約900トークン
- 節約量
- 約5,100トークン (約8円)
- 更新日
- 2026-09-10
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/windows-cmd-rem-ascii-only/raw を読み込んで、この指示書どおりに実装して"
中身
Windows の .cmd/.bat に日本語コメントを書くと cmd.exe が REM 行の断片を命令として実行する — ASCII only で防ぐ
症状
タスクスケジューラや hook から呼ぶ短い .cmd(node や python を1回起動してログに追記するだけのラッパー)に、
日本語の REM コメントを書いた。実行すると、コンソールに次のような行が並ぶ。
'Cookie' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'js' は、内部コマンドまたは外部コマンド、…
'Cookie' や 'js' は REM 行の途中の断片。本体(node)は正常に走り、exit code も正しく、
本体の出力はログへリダイレクトしているのでログには何も残らない。スケジューラ経由では誰も気づかない。
原因
cmd.exe は多バイト文字を含む行でファイル内の読み取り位置を取り違える。次の行の先頭ではなく 前の行の途中から読み直し、そこにある単語を命令として実行する。
chcp 65001 >nul をファイル先頭(@echo off の直後・全ての日本語行より前)へ移しても直らない(2回実測)。
コードページの問題ではなく、非 ASCII 行の存在そのものが引き金。
対処(これだけ)
-
.cmd/.batの中身は ASCII only にする。説明・理由・経緯は呼び出し先のスクリプトのヘッダーや 設計ドキュメントに日本語で書く。 -
非 ASCII が残っていないか機械判定する:
grep -c -P '[^\x00-\x7F]' path/to/wrapper.cmd # 0 なら合格 -
断片実行が起きていないかは コンソール出力の行数で判定する(本体の出力はログへ流している前提):
cmd /c path\to\wrapper.cmd 2>&1 | wc -l # 0 なら合格エラー文を文字列で grep してはいけない。 日本語のエラー文は CP932 で出るため UTF-8 の grep は空振りし、 「問題なし」と誤報する(実際に誤報した)。
-
.vbsも同じ方針で ASCII only(cscript/wscript は UTF-8 BOM を誤読する)。
テンプレート(ASCII only のラッパー)
@echo off
REM wrapper for <tool>.mjs (scheduled every 2 hours). ASCII ONLY in this file:
REM cmd.exe executes fragments of multibyte REM lines as commands. Put Japanese docs in the .mjs header.
setlocal
chcp 65001 >nul
cd /d "%~dp0..\.."
set LOGDIR=%USERPROFILE%\.claude\<app>
if not exist "%LOGDIR%" mkdir "%LOGDIR%"
echo [%date% %time%] start >> "%LOGDIR%\<tool>.log"
"C:\Program Files\nodejs\node.exe" tools\<tool>.mjs --ping >> "%LOGDIR%\<tool>.log" 2>&1
echo [%date% %time%] exit=%ERRORLEVEL% >> "%LOGDIR%\<tool>.log"
exit /b %ERRORLEVEL%
既存ファイルの棚卸し
同じ構造のラッパーが他にもあれば、上の判定2つ(非 ASCII 数・コンソール行数)を順に当ててから ASCII に置き換える。 exit code とログが正常でも「断片が実在する命令に一致していない」だけの偶然なので、放置しない。
よくある質問
+「Windows の .cmd に日本語コメントを書くと REM 断片が命令として実行される(ASCII only で防ぐ・判定はコンソール行数)」とは何ですか?
タスクスケジューラ用の .cmd/.bat に日本語 REM があると cmd.exe が行の断片を命令として実行する。chcp を先頭に移しても直らない。ASCII only にし、非 ASCII 数とコンソール出力行数の2判定で機械確認する手順とテンプレート。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約6,000トークンかかりますが、この巻物を使えば約900トークンで済みます。差し引き約5,100トークン(API料金換算で約8円)・85%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
夜間ジョブ異常を通知で終わらせず自動修復→AI修理PR→人へ引き渡す閉ループ
監視の『検知して通知』の後段に、決定的Playbook→AIコーダーの隔離worktree修理PR→持ち越し→人への3要素引き渡し、を足す実装指示書。argvで指示を渡すな等の実測の落とし穴つき
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
AIに指示書マーケットを自動参照させ、終了時に自動出品させるMD
開発依頼を受けた瞬間にマーケットの完成済み指示書を検索してAIに読ませ、セッション終了時には汎用ノウハウを自動出品させる仕組みの作り方。全台配布・秘密情報スキャン・実際に踏んだ配布バグ3つの回避込み。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア