- 締切済み
DOSバッチでの相対パスの認識
基本的な質問ですみません。 下記バッチがあるとします。 C:\HOME\BAT\EXP\LIST\DEL.BAT バッチでは下記ディレクトリ内ファイルを削除しようと 考えてます。 C:\HOME\LOG\JOB\JOB.LOG でバッチで「DEL ../../../LOG/JOB/JOB.LOG」と記述しましたが 削除されません。 コマンドプロンプトで「CD ../../../」としても上記「HOME」フォルダに 移動できず絶対パスだと移動できます。 「DEL」「CD」コマンドは相対パスの場合、何かコツがあるのでしょうか?。 それとも単に間違えているのか・・。 アドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
相対パスは、カレントディレクトリを基準にするので、 それが災いしてちゃんと動かないのだと思います。 それと、DEL.BATのような名前は、コマンドDELと識別が 難しくなるのでやめた方が良いでしょう。 たぶん、"c:\home\log\exp\list"をカレントに、DEL。BATを起動すると・・ DEL.BAT内で、DELコマンドでなく、DEL.BATを再帰的に呼び出してしまう 可能性があります。 また、DEL.BAT内で、/による表現を使っていますが・・ Windows/DOSらしく、\とした方が間違いありません。 /でも動く場合はありますが、必ず動くとは限らない。 (これが理由かも??) 突っ込みどころが多いので、原因が確定できません。
- Senna_FF
- ベストアンサー率45% (153/334)
delコマンドで相対パス指定はできなかったと思います。 >コマンドプロンプトで「CD ../../../」としても上記「HOME」フォルダに >移動できず絶対パスだと移動できます。 これはよくわかりません。カレントが「C:\HOME\BAT\EXP\LIST」であれば先のコマンドで移動は可能だと思いますが・・・・ ということで、私も#3回答者様の方法がよいのではと思います。 絶対パスを指定したくないのであれば、他の方法を考えるしかないですね。 (環境変数からのパス取得とか、ファイル名検索とか・・・)
- galoon
- ベストアンサー率28% (38/133)
BATファイルの実行はどちらでやられているのでしょうか? 相対パスとは、実行時のパスからの相対的な位置を言うのでBATファイルの所在とは関係ありません。 BATファイルの同じパスに移動してから起動するか、BATファイルの頭の方にBATファイルのあるパスまで移動するコマンドを入れるとよろしいのではないでしょうか? エクスプローラーなどからダブルクリックなどで実行する用途があるならBATファイルの頭の部分に移動コマンドの追加がおすすめです。
- rakusi
- ベストアンサー率15% (16/103)
私良く解りませんか^^; 参考になれば。 http://www.cj-c.com/faq/pass.htm
- phoenix343
- ベストアンサー率15% (296/1946)
DOSでは'\'がパスの区切りです。 DEL ..\..\..\LOG\JOB\JOB.LOG じゃダメだったのかな?