- 締切済み
コマンドプロンプトでのエスケープ文字
標記の通り、コマンドプロンプト上での エスケープ文字は何を入力すればよいのかで 困っています。 具体的には net use コマンドを利用して共有リソースに 接続しようとしているのですが、 その際に、パスワードに空白文字やダブルクォーテーションが含まれている場合、パスワードを そのままコマンドプロンプト上に打っても 所望の動作になりません。 特殊文字(|&<>等)はエスケープするのだとは思うのですが どの文字でエスケープすればよいのかどうかを 探しだすことができませんでした。 (「ダブルクォーテーションでくくる」や「^」を 前につけるというのはあるのですが、これらを 組み合わせてもパスワードに「 "|<>&」等が含まれている場合には対応できませんでした) どなたかご存知の方、よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- kunimatsu2000
- ベストアンサー率0% (0/0)
なんか増えていますね。 パスワード1:? なんかバグっぽいんですけど。 パスワード2:「\"" "<" "b" "|" "c」 「"」は\を前に付ける。 「スペース」は「""」で囲う。
- kunimatsu2000
- ベストアンサー率0% (0/0)
Windows2000のヘルプで「エスケープ」を検索すれば出てきます。 なぜ変数を使わないのか疑問。
補足
私の環境は Windows2000 ではありませんが XP Pro のヘルプ「エスケープ」で検索されたことは だいたい把握しています。 よろしければ具体的に、以下の場合のエスケープを 教えていただけないでしょうか? 「」で囲まれた文字列がパスワードです。 これらのパスワードを用いて net use コマンド を利用する場合をご教授ください。 下記□は半角空白を表します。 パスワード1:「/help」 パスワード2:「"a□<□b□|□c」 C:\>net use \\computer\share /user:username ???? 上記2種類のパスワードに対してエスケープした場合 「????」が何になるかをご教授ください。 また、変数を使用するとは set を利用するということでしょうか? 変数を利用しても結果は変わらないのですが。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
「 "|<>&」の6文字がパスワードの場合、 net use \\server " \"^|^<^>^&" /user:user というのが、正しいエスケープかと思います。 あとは、応用なので、ご自分で。
補足
「"」のエスケープ文字は「\」 「|<>&」のエスケープ文字は「^」ということでしょうか? コマンドプロンプト上での特殊文字である「|<>&()」に対する エスケープ文字を「^」だと解釈してよろしいでしょうか? また、「正しいエスケープ」というのは どこかに記述されていた内容なのでしょうか? その場合、その URL を教えていただけないでしょうか? ただ、パスワードが 「"\"a□<□b□|□c」(□は半角空白一文字) の場合正しく認識しません。 この場合 "\"\\"a□^<□b□^|□c" となりますが net use コマンドを実行しても使い方が表示されてしまうだけです。 パスワードに含まれる「\」自身を「^」「\」でエスケープしても "\"\\\"a□<□b□|□c" や "\"^\\"a□<□b□|□c" で試しても認識しません。 おそらく、マイクロソフトが公表している(であろう) 正式なエスケープ文字、コマンドプロンプトでの 認識方法のページを見つけるのが一番ですが そのページが見あたりません。 どなたか、そのようなページをご存じの方は いらっしゃいませんでしょうか?
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
>(「ダブルクォーテーションでくくる」や「^」を >前につけるというのはあるのですが、これらを >組み合わせてもパスワードに「 "|<>&」等が含まれている場合には対応できませんでした) パスワードをシングルクォートで囲めば良いと思います。 net use \\server 'pass>word' /user:username
補足
パスワードに使用可能な文字には シングルクォーテーションも可能のようです。 ですので、シングルクォーテーションで囲んだ場合 今度は、シングルクォーテーションを含む パスワードに対応できなくなってしまいます。 パスワードに使用可能な文字は ほとんどの記号(ASCII)が当てはまりそうです。 きちんと調べて無くて申し訳ありませんが。
- PowerOn
- ベストアンサー率62% (5/8)
ちょっと試したけど、うまく行きませんでした。 "逃げ"なのですが、WSHでやったら出来ました。 batで八方塞がりになったら、最悪これで、、
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
コマンドに直接打つのではなくて パスワードを*にして 実行時に入力するようにしてはどうでしょう
補足
すいません。補足です。 もう少し具体的に書くと net use コマンドだけを直に実行するのではなく 他のプログラムからの流れで net use コマンドを 利用します。 そして、全体のプログラム自体はバッチ的な (つまりユーザの操作が介入しない) もので「実行時に入力」は出来ない という前提があります。 説明不足で申し訳ありません。
補足
すいません。伺いたいパスワードを間違えていました。 回答No.4 の補足にも記述しましたが >ただ、パスワードが >「"\"a□<□b□|□c」(□は半角空白一文字) >の場合正しく認識しません。 この場合のパスワードのエスケープはどのようになるかを伺おうとしていました。 よろしくお願いします。 ちなみにパスワード2のエスケープは 「\"" "<" "b" "|" "c」ではなく「\"a" "<" "b" "|" "c」と考えていいですよね。 あと、変数を利用すれば解決する問題なのでしょうか? (なぜ変数を利用しないのか疑問とおっしゃっていたので) コマンドプロンプトでのエスケープについては大抵のパターンを試した結果 挙動が非常に怪しい上にしっかりとした文書が無いので 私自身仕様という名のバグだと思っています。 (が、仕様をご存じの方がいるかもしれないという希望を持って質問をしている次第です)