2016/06/22
自分用メモ
H:\job>dir ドライブ H のボリューム ラベルは LaCie です ボリューム シリアル番号は 82D7-3881 です H:\job のディレクトリ 2016/06/22 05:57 <DIR> . 2016/06/22 05:57 <DIR> .. 2016/06/22 05:58 34 love&peace.bat 2016/06/22 05:57 29 micro soft.bat 2016/06/22 05:56 24 yahoo.bat 3 個のファイル 87 バイト 2 個のディレクトリ 2,441,088,843,776 バイトの空き領域 H:\job>love&peace.bat 'love' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 'peace.bat' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 H:\job>micro soft.bat 'micro' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 H:\job>yahoo.bat Yahoo! H:\job>
空白や制御で使う記号が入ったファイル名のバッチファイルを実行するにはダブルコーテーション(“)で括る。
H:\job>"love&peace.bat" "love & peace !" H:\job>"micro soft.bat" micro soft! H:\job>
なぜlove&peace.batだけ出力がダブルコーテーションで囲ってあるかというと、こういう理由による。
H:\job>echo love&peace ! love 'peace' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 H:\job>
‟&”で区切られてしまうから。
h:\job>CALL love&peace.bat 'love' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 'peace.bat' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 h:\job>CALL "love&peace.bat" "love & peace !" h:\job>CALL micro soft.bat 'micro' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 h:\job>CALL "micro soft.bat" micro soft! h:\job>
H:\job>CMD.EXE /C love&peace.bat 'love' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 'peace.bat' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 H:\job>CMD.EXE /C micro soft.bat 'micro' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 H:\job>CMD.EXE /C yahoo.bat Yahoo! H:\job>
これもダブルコーテーションで囲ってみる。
H:\job>CMD.EXE /C "love&peace.bat" 'love' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 'peace.bat' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 H:\job>CMD.EXE /C "micro soft.bat" micro soft! H:\job>
困った。‟&”をエスケープできない…
この情報があって本当によかった…
Windows Script Programming:CMD /C;←ここにお呪いを付けよう。
h:\job>CMD.EXE /C;"love&peace.bat" "love & peace !" h:\job>CMD.EXE /C;"micro soft.bat" micro soft! h:\job>CMD.EXE /C;"yahoo.bat" Yahoo! h:\job>