setコマンドを使用して入力させます 以下のバッチファイルを作成します(ファイル名は D:\tmp\aaa.bat) echo off rem 初期化 set USR_INPUT_STR= rem 入力要求 set /P USR_INPUT_STR="文字列を入力してください: " rem 入力値echo echo 入力した文字は %USR_INPUT_STR% です
コマンドプロンプトで、コマンドに空白を含む文字列を渡したい場合、二重引用符「"」で囲む必要があることは多くの方が知っていると思う。 しかし、その他のエスケープシーケンスはどうなっているのだろうか。Windows XP SP3のマシンでヘルプ内を探してみたが、それらしい記述が見つからない。どうしてそんな基本的な仕様を明確に書いていないのだろうか…。 等と思っていたところ、殆ど偶然に、MSDNにその記述を発見したのでメモしておく。 引数は、空白 (スペースまたはタブ) で区切ります。 キャレット (^) は、エスケープ文字やデリミタとしては認識されません。カレットは、オペレーティング システムのコマンド ライン パーサーによって完全に処理されてからプログラムの argv 配列に渡されます。 二重引用符で囲まれた文字列 ("string") は、空白を含む場合でも、単一の引数と見なされます。二重
cmd.exe の引数の扱いがあまりにもカオスだったのでちょっと頑張って調べてみた。 本来ならここは公式の資料に当たるのが正しいアプローチだと思うけど、どうしても公式の資料が見つからなかったので、色々試して推測してみることに。 断片的な資料は見付けたけど、完全じゃない。一応URL貼っておく。Windows Server 2003 のヘルプだけど、恐らくそんなに変わらないと思う。 コマンド シェルの概要 コマンド リダイレクト演算子を使用する なので、以下で述べる内容は間違いを含む可能性があります。というか正確さは一切保証されないのであしからず。 検証方法 以下のような引数をただ表示するだけの簡単な C のプログラムを用意した。仮に args.exe とでもしておく。 #include <stdio.h> int main(int argc, char const* argv[]) { in
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く