努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:windows:windows-021

CMD.EXE /C のメモ

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>

‟&”で区切られてしまうから。

CALLで呼び出す場合も同じ

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>

CMD.EXE /C で呼び出す

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>
documents/windows/windows-021.txt · 最終更新: 2016/06/22 06:28 by k896951