• 締切済み

コマンドラインの設定がおかしくなってしまって

コマンドラインの設定がおかしくなってしまって 一部のバッチとvbsが動かなくなってしまいました・・・ 何かの拍子で設定が変わってしまったのかvbs等で変わったのか分かりませんが・・・ @echo "%~dpn1" pause と言う単純なバッチを組みドラッグしら通常 @echo "%~dpn1"は そのファイルを表示するのですが表示は""となってしまってて最初ソースがおかしいのかと思っていたのですがどうもそのPCの設定が変わっただけ見たく 他のpcで試したらちゃんとエコーを返したようなのです 挙動から見てエコーで""と成っているだけでなく実際にそのパスとファイル名等が入らないようです どういう部分がおかしくなったと思いますか? 一応戻れる所まで戻って最近インストールした物も消してみたんですが どうも治らないみたいです・・・ osは一応 xpsp3です。

みんなの回答

回答No.3

No2の物ですが、段落がめちゃくちゃになり文脈が変なので、No2は破棄してください。こちらを読んでください。 >/E:ONでも治らないと言うか多分これは一時的適用ですよね? 全部ちゃんと読みました? ウインドウに表示できる行数だけ表示して一時停止しています。「何かキー」を押して次のページを表示させてゆきます。これを見逃すような人であるなら、BATファイルでの操作は推奨できませんね。治らないのなら見てもしょうがありませんが、実はもっと単純な所にあるような気がします。 現象の考察です。 1.echo は動作しているか。 ”している” 2.制御文字は動作しているか。”していない” 3.引数は正しく渡されているか。”わからない” となります。2番は引数に渡された値をフルパスに展開する呪文で、OnOffはCMDに引数として渡すかレジストリーで設定する。引数に渡す方法は例えば、BATの中で、 if not "%2" == "" (cmd /e:on /c "%0" "おまじない" %1) else ( echo ....) などとする事も可能ですね。ショートカットにする方法もありますね。setlocalを使う方法もあります。 1番は ””が表示されているので動作していますね。3番ですが、例えば、CMDを起動し(コマンドツール)、BATファイルがあるフォルダーまで移動して、 > cmd /c XXX.bat "たろう" ”たろう”と表示されたら、問題は2つ。 1.CMDがD&Dに対応できないように設定されてしまった。 2.BATファイルが実はショートカットで操作していた。プロパティーを見ると、引数かオプションが間違っている。 ※引数に ””を追加して実行すると、本現象の再現ができる。質問者が言っている ””が表示されるだけ。 もし表示されないのなら、XXX.batを次のように変更してみましょう。 >システムルートはc:\って意味でしょうか 違います。”%”の文字でくくっている事に注目。これはシェル(CMDの事)での変数を意味しています。CMDのプロンプトで、 > echo %SystemRoot% とすればどこを指しているか分かります。set を実行するだけでも分かります(環境変数が全部表示されます)。 echo 0=%0 1=%1 2=%2 これで同じように実行して、どうなりましたか? そこにヒントがあります。CMDが壊れているか、変な物に置き換わっています。 そうつまり、いずれにせよ、あなたの操作ミスを疑っています。 >_DEFAULT.BAT DEFAULT.BATの文字列が検索でも見つからないのですが デフォルトの設定を変えていなければ、存在していないかもしれません。可能性を列挙しただけなので、なければないでかまいません。 >もう一つBATを起動した時のCMDのプロパティも確認。 >あと、ここも分からないです。 CMD(コマンドプロンプト)のタイトルバー(ウインドウ枠の上部)の左端にアイコンがありますね。それを右クリックで「プロパティ」を表示します。これを変更すると、現在のものか、ショートカットを変更するか聞かれるので、ショートカットも変更すると次回も設定が残っています。 こんなBATファイルを利用しなくても、簡単に分かる方法があります。 1.スタートメニューの「ファイル名を指定して実行」にファイルをD&Dするだけフルパスに展開されます。 2.コマンドプロンプトを起動しておいて、同じくD&Dすると、同じようにフルパスに展開されます。D&Dできるようにするには前述の プロパティで変更します(編集できるようにする)。 ヘルプやネットでは”CMD リファレンス”で上記やコマンドを説明しているサイトが見つかります。シェルスクリプトはラインヘルプを使うのが最も便利で、効率的です。

sakusa001
質問者

お礼

取り敢えず治ったのでありがとうございました。

sakusa001
質問者

補足

echo 0=%0 1=%1 2=%2 正常にbatが動く物は %0 %1にパスが入力され 駄目な方は%0のみに入力されているようです。 これのデフォルトを変えられれば解決するぽいです。 d&dでパスは受け取れていますし。 細かい回答ありがとうございます。

回答No.2

>/E:ONでも治らないと言うか多分これは一時的適用ですよね? 全部ちゃんと読みました? ウインドウに表示できる行数だけ表示して一時停止しています。「何かキー」を押して次のページを表示させてゆきます。これを見逃すような人であるなら、BATファイルでの操作は推奨できませんね。治らないのなら見てもしょうがありませんが、実はもっと単純な所にあるような気がします。 現象の考察です。 1.echo は動作しているか。 ”している” 2.制御文字は動作しているか。”していない” 3.引数は正しく渡されているか。”わからない” となります。2番は引数に渡された値をフルパスに展開する呪文で、OnOffはCMDに引数として渡すかレジストリーで設定する。引数に渡す方法は例えば、BATの中で、 if not "%2" == "" (cmd /e:on /c "%0" "おまじない" %1) else ( echo ....) などとする事も可能ですね。ショートカットにする方法もありますね。setlocalを使う方法もあります。 1番は ””が表示されているので動作していますね。3番ですが、例えば、CMDを起動し(コマンドツール)、BATファイルがあるフォルダーまで移動して、 > cmd /c XXX.bat "たろう" ”たろう”と表示されたら、問題は2つ。 1.CMDがD&Dに対応できないように設定されてしまった。 2.BATファイルが実はショートカットで操作していた。プロパティーを見ると、引数かオプションが間違っている。 ※引数に ””を追加して実行すると、本現象の再現ができる。質問者が言っている ””が表示されるだけ。 もし表示されないのなら、XXX.batを次のように変更してみましょう。 >システムルートはc:\って意味でしょうか 違います。”%”の文字でくくっている事に注目。これはシェル(CMDの事)での変数を意味しています。CMDのプロンプトで、 > echo %SystemRoot% とすればどこを指しているか分かります。set を実行するだけでも分かります(環境変数が全部表示されます)。 echo 0=%0 1=%1 2=%2 これで同じように実行して、どうなりましたか? そこにヒントがあります。CMDが壊れているか、変な物に置き換わっています。 そうつまり、いずれにせよ、あなたの操作ミスを疑っています。 >_DEFAULT.BAT DEFAULT.BATの文字列が検索でも見つからないのですが デフォルトの設定を変えていなければ、存在していないかもしれません。可能性を列挙しただけなので、なければないでかまいません。 >もう一つBATを起動した時のCMDのプロパティも確認。 >あと、ここも分からないです。 CMD(コマンドプロンプト)のタイトルバー(ウインドウ枠の上部)の左端にアイコンがありますね。それを右クリックで「プロパティ」を表示します。これを変更すると、現在のものか、ショートカットを変更するか聞かれるので、ショートカットも変更すると次回も設定が残っています。 こんなBATファイルを利用しなくても、簡単に分かる方法があります。 1.スタートメニューの「ファイル名を指定して実行」にファイルをD&Dするだけフルパスに展開されす。 2.コマンドプロンプトを起動しておいて、同じくD&Dすると、同じようにフルパスに展開されます。D&Dできるようにするには前述のプロパティで変更します(編集できるようにする)。 ヘルプやネットでは”CMD リファレンス”で上記やコマンドを説明しているサイトが見つかります。シェルスクリプトはラインヘルプを使うのが最も便利で、効率的です。

sakusa001
質問者

補足

ルートがおんなじPCからダメもとで_デフォルトを差し替えてみたら パス吐き出すようになりました。 ありがとうございました。

回答No.1

D&Dしただけでそうなるとは、思えません。何か変なBATかVBSをロードしたと思われます。 >cmd /? でヒントが記載されています。たぶんですが、 拡張機能 がOffになっています。レジストリー又はショートカット(CMDの)、で変更してください。 また%Systemroot%以下の「_DEFAULT.BAT」のプロパティも確認するといいでしょう。 もう一つBATを起動した時のCMDのプロパティも確認。

sakusa001
質問者

補足

回答内容の意味は掴めたのですが デフォルトを変える方法が分からないのでもう少し補足いただけますか? コマンドプロント立ち上げて CMD ?を見ると確かに /Eとか/F辺が該当しそうなのですが CMD /E:ONでも治らないと言うか多分これは一時的適用ですよね? >レジストリー又はショートカット(CMDの)、で変更してください。 >また%Systemroot%以下の「_DEFAULT.BAT」のプロパティも確認するといいでしょう。 多分ここの回答部分に答えがあると思うのですが システムルートはc:\って意味でしょうか?レジストリ内の話でしょうか? いずれにしろ_DEFAULT.BAT DEFAULT.BATの文字列が検索でも見つからないのですが どういう状態でやればデフォルトが変わるのでしょうか? >もう一つBATを起動した時のCMDのプロパティも確認。 あと、ここも分からないです。 何か知らない部分なので初歩的な事言っていると思うので心苦しいのですが・・・ すいません。