現在のディレクトリをバッチファイルディレクトリに変更する


18

batWindowsにprocdump操作を実行するファイルがあります。バッチファイルの問題は、ジョブを実行する前に最初にバッチファイルディレクトリにcdする必要があることです。さもないと、スクリプトが機能しません。

現在のバッチファイルディレクトリに変更する方法は?

私は次のコードを試しましたprocdump.bat

cd "%~dp"
procdump -h devenv.exe mydump.txt

しかし、失敗しました。エラーメッセージは次のとおりです。

次のバッチパラメータ置換でのパス演算子の使用は無効です:%〜dp "

有効な形式の場合、CALL /?またはFOR /?

編集:提供された答えは機能していますが、キャッチは1つだけです。現在のディレクトリがバッチファイルディレクトリと異なる場合、「指定されたパスが見つかりません」というメッセージが表示されます。誰にもアイデアはありますか?


「%〜dp」はどこから取得しますか?
fretje

回答:


24

わかりまし、私はここであなたが意味するものを見つけと思います%~dp

あなたが本当にやりたいことはこれだと思います:

cd /D "%~dp0"

(!)ただし、現在のディレクトリがcdアクティブドライブを変更しないため、現在のディレクトリが別のドライブにあるときにバッチを実行しようとすると、正しい動作が得られないことに注意してください。

編集:どうやら(@Yoopergeekに感謝)コマンドに/Dパラメーターを追加してcd、アクティブなドライブも変更できるようにすることができます。


これらのバッチパラメータの詳細についてhelp callは、cmdプロンプトを参照してください。
追って通知があるまで一時停止します。

ところで、あなたはこのように、これらのパラメータを組み合わせることができます:%~dp0
追って通知があるまで一時停止しました。

あなたの答えは役に立ちます。しかし、現在のディレクトリがバッチファイルとは異なるディレクトリにある場合、上記のコマンドは失敗します。さえ、cd /Dまたはcd "%~dp0" /D助けることができません。
グラビトン

@Ngu Soon Hui:現在のディレクトリがバッチファイルとは異なるディレクトリにあることは明らかでした。しかし、なぜそのコマンドは失敗しますか?ここでテストしましたが、動作します。
fretje

1
を使用して解決策を見つけましたcd /D "%~dp0"。ありがとう。
グラビトン

4

fretjeの答えにコメントを残したいのですが、明らかにできませんか?


とにかく、メモに関して:
ただし、cdはアクティブドライブを変更しないため、現在のディレクトリが別のドライブにあるときにバッチを実行しようとすると、正しい動作が得られないことに注意してください。


/DCDコマンドでスイッチを使用すると、CDはアクティブドライブを変更します。


...まだ自分の答えにコメントできます。男、ServerFaultの担当者がいないのはうんざりです。
Yoopergeek

1
@Yoopergeek:アカウントを関連付けることができます。SOの担当者が200を超える場合は、ここに100人の担当者が表示されます。
fretje 09
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.