プロが教える店舗&オフィスのセキュリティ対策術

標記の通り、コマンドプロンプト上での
エスケープ文字は何を入力すればよいのかで
困っています。

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

どなたかご存知の方、よろしくお願いします。

A 回答 (6件)

なんか増えていますね。



パスワード1:? なんかバグっぽいんですけど。
パスワード2:「\"" "<" "b" "|" "c」

「"」は\を前に付ける。
「スペース」は「""」で囲う。

この回答への補足

すいません。伺いたいパスワードを間違えていました。
回答No.4 の補足にも記述しましたが
>ただ、パスワードが
>「"\"a□<□b□|□c」(□は半角空白一文字)
>の場合正しく認識しません。
この場合のパスワードのエスケープはどのようになるかを伺おうとしていました。
よろしくお願いします。

ちなみにパスワード2のエスケープは
「\"" "<" "b" "|" "c」ではなく「\"a" "<" "b" "|" "c」と考えていいですよね。
あと、変数を利用すれば解決する問題なのでしょうか?
(なぜ変数を利用しないのか疑問とおっしゃっていたので)

コマンドプロンプトでのエスケープについては大抵のパターンを試した結果
挙動が非常に怪しい上にしっかりとした文書が無いので
私自身仕様という名のバグだと思っています。
(が、仕様をご存じの方がいるかもしれないという希望を持って質問をしている次第です)

補足日時:2004/12/28 00:34
    • good
    • 0

Windows2000のヘルプで「エスケープ」を検索すれば出てきます。


なぜ変数を使わないのか疑問。

この回答への補足

私の環境は Windows2000 ではありませんが
XP Pro のヘルプ「エスケープ」で検索されたことは
だいたい把握しています。

よろしければ具体的に、以下の場合のエスケープを
教えていただけないでしょうか?
「」で囲まれた文字列がパスワードです。
これらのパスワードを用いて net use コマンド
を利用する場合をご教授ください。
下記□は半角空白を表します。

パスワード1:「/help」
パスワード2:「"a□<□b□|□c」

C:\>net use \\computer\share /user:username ????

上記2種類のパスワードに対してエスケープした場合
「????」が何になるかをご教授ください。
また、変数を使用するとは set を利用するということでしょうか?
変数を利用しても結果は変わらないのですが。

補足日時:2004/12/26 22:25
    • good
    • 0

「 "|<>&」の6文字がパスワードの場合、



net use \\server " \"^|^<^>^&" /user:user

というのが、正しいエスケープかと思います。

あとは、応用なので、ご自分で。

この回答への補足

「"」のエスケープ文字は「\」
「|<>&」のエスケープ文字は「^」ということでしょうか?
コマンドプロンプト上での特殊文字である「|<>&()」に対する
エスケープ文字を「^」だと解釈してよろしいでしょうか?
また、「正しいエスケープ」というのは
どこかに記述されていた内容なのでしょうか?
その場合、その URL を教えていただけないでしょうか?

ただ、パスワードが
「"\"a□<□b□|□c」(□は半角空白一文字)
の場合正しく認識しません。
この場合
"\"\\"a□^<□b□^|□c"
となりますが
net use コマンドを実行しても使い方が表示されてしまうだけです。
パスワードに含まれる「\」自身を「^」「\」でエスケープしても
"\"\\\"a□<□b□|□c" や "\"^\\"a□<□b□|□c"
で試しても認識しません。

おそらく、マイクロソフトが公表している(であろう)
正式なエスケープ文字、コマンドプロンプトでの
認識方法のページを見つけるのが一番ですが
そのページが見あたりません。
どなたか、そのようなページをご存じの方は
いらっしゃいませんでしょうか?

補足日時:2004/12/15 00:31
    • good
    • 0

>(「ダブルクォーテーションでくくる」や「^」を


>前につけるというのはあるのですが、これらを
>組み合わせてもパスワードに「 "|<>&」等が含まれている場合には対応できませんでした)

パスワードをシングルクォートで囲めば良いと思います。

net use \\server 'pass>word' /user:username

この回答への補足

パスワードに使用可能な文字には
シングルクォーテーションも可能のようです。
ですので、シングルクォーテーションで囲んだ場合
今度は、シングルクォーテーションを含む
パスワードに対応できなくなってしまいます。

パスワードに使用可能な文字は
ほとんどの記号(ASCII)が当てはまりそうです。
きちんと調べて無くて申し訳ありませんが。

補足日時:2004/12/13 23:32
    • good
    • 0

ちょっと試したけど、うまく行きませんでした。


"逃げ"なのですが、WSHでやったら出来ました。
batで八方塞がりになったら、最悪これで、、
    • good
    • 2

コマンドに直接打つのではなくて


パスワードを*にして
実行時に入力するようにしてはどうでしょう

この回答への補足

すいません。補足です。

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

説明不足で申し訳ありません。

補足日時:2004/12/12 21:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング