• 締切済み

コマンドプロンプトでのエスケープ文字

標記の通り、コマンドプロンプト上での エスケープ文字は何を入力すればよいのかで 困っています。 具体的には net use コマンドを利用して共有リソースに 接続しようとしているのですが、 その際に、パスワードに空白文字やダブルクォーテーションが含まれている場合、パスワードを そのままコマンドプロンプト上に打っても 所望の動作になりません。 特殊文字(|&<>等)はエスケープするのだとは思うのですが どの文字でエスケープすればよいのかどうかを 探しだすことができませんでした。 (「ダブルクォーテーションでくくる」や「^」を 前につけるというのはあるのですが、これらを 組み合わせてもパスワードに「 "|<>&」等が含まれている場合には対応できませんでした) どなたかご存知の方、よろしくお願いします。

みんなの回答

回答No.6

なんか増えていますね。 パスワード1:? なんかバグっぽいんですけど。 パスワード2:「\"" "<" "b" "|" "c」 「"」は\を前に付ける。 「スペース」は「""」で囲う。

moremore
質問者

補足

すいません。伺いたいパスワードを間違えていました。 回答No.4 の補足にも記述しましたが >ただ、パスワードが >「"\"a□<□b□|□c」(□は半角空白一文字) >の場合正しく認識しません。 この場合のパスワードのエスケープはどのようになるかを伺おうとしていました。 よろしくお願いします。 ちなみにパスワード2のエスケープは 「\"" "<" "b" "|" "c」ではなく「\"a" "<" "b" "|" "c」と考えていいですよね。 あと、変数を利用すれば解決する問題なのでしょうか? (なぜ変数を利用しないのか疑問とおっしゃっていたので) コマンドプロンプトでのエスケープについては大抵のパターンを試した結果 挙動が非常に怪しい上にしっかりとした文書が無いので 私自身仕様という名のバグだと思っています。 (が、仕様をご存じの方がいるかもしれないという希望を持って質問をしている次第です)

回答No.5

Windows2000のヘルプで「エスケープ」を検索すれば出てきます。 なぜ変数を使わないのか疑問。

moremore
質問者

補足

私の環境は Windows2000 ではありませんが XP Pro のヘルプ「エスケープ」で検索されたことは だいたい把握しています。 よろしければ具体的に、以下の場合のエスケープを 教えていただけないでしょうか? 「」で囲まれた文字列がパスワードです。 これらのパスワードを用いて net use コマンド を利用する場合をご教授ください。 下記□は半角空白を表します。 パスワード1:「/help」 パスワード2:「"a□<□b□|□c」 C:\>net use \\computer\share /user:username ???? 上記2種類のパスワードに対してエスケープした場合 「????」が何になるかをご教授ください。 また、変数を使用するとは set を利用するということでしょうか? 変数を利用しても結果は変わらないのですが。

回答No.4

「 "|<>&」の6文字がパスワードの場合、 net use \\server " \"^|^<^>^&" /user:user というのが、正しいエスケープかと思います。 あとは、応用なので、ご自分で。

moremore
質問者

補足

「"」のエスケープ文字は「\」 「|<>&」のエスケープ文字は「^」ということでしょうか? コマンドプロンプト上での特殊文字である「|<>&()」に対する エスケープ文字を「^」だと解釈してよろしいでしょうか? また、「正しいエスケープ」というのは どこかに記述されていた内容なのでしょうか? その場合、その URL を教えていただけないでしょうか? ただ、パスワードが 「"\"a□<□b□|□c」(□は半角空白一文字) の場合正しく認識しません。 この場合 "\"\\"a□^<□b□^|□c" となりますが net use コマンドを実行しても使い方が表示されてしまうだけです。 パスワードに含まれる「\」自身を「^」「\」でエスケープしても "\"\\\"a□<□b□|□c" や "\"^\\"a□<□b□|□c" で試しても認識しません。 おそらく、マイクロソフトが公表している(であろう) 正式なエスケープ文字、コマンドプロンプトでの 認識方法のページを見つけるのが一番ですが そのページが見あたりません。 どなたか、そのようなページをご存じの方は いらっしゃいませんでしょうか?

回答No.3

>(「ダブルクォーテーションでくくる」や「^」を >前につけるというのはあるのですが、これらを >組み合わせてもパスワードに「 "|<>&」等が含まれている場合には対応できませんでした) パスワードをシングルクォートで囲めば良いと思います。 net use \\server 'pass>word' /user:username

moremore
質問者

補足

パスワードに使用可能な文字には シングルクォーテーションも可能のようです。 ですので、シングルクォーテーションで囲んだ場合 今度は、シングルクォーテーションを含む パスワードに対応できなくなってしまいます。 パスワードに使用可能な文字は ほとんどの記号(ASCII)が当てはまりそうです。 きちんと調べて無くて申し訳ありませんが。

  • PowerOn
  • ベストアンサー率62% (5/8)
回答No.2

ちょっと試したけど、うまく行きませんでした。 "逃げ"なのですが、WSHでやったら出来ました。 batで八方塞がりになったら、最悪これで、、

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

コマンドに直接打つのではなくて パスワードを*にして 実行時に入力するようにしてはどうでしょう

moremore
質問者

補足

すいません。補足です。 もう少し具体的に書くと net use コマンドだけを直に実行するのではなく 他のプログラムからの流れで net use コマンドを 利用します。 そして、全体のプログラム自体はバッチ的な (つまりユーザの操作が介入しない) もので「実行時に入力」は出来ない という前提があります。 説明不足で申し訳ありません。