2
BATファイルで `%〜dp0`を展開した後、予期しない重複したディレクトリ名
Windows 10 Enterprise x64を使用しています。次のディレクトリ階層があり、BATファイルが最も内側のレベルにあります。 C:\ dir\ my files\ run.bat BATファイルには次の行が含まれています。 @pushd %~dp0 @echo %~dp0 @popd (の意味と使用法は%~dp0、ヘルプトピックfor /?とこの回答で説明されています) 現在のディレクトリがであるコマンドプロンプトからBATファイルを実行するとC:\dir\my files、非常に妥当な結果が得られます。 C:\dir\my files>run.bat C:\dir\my files\ しかし、親ディレクトリから呼び出すとC:\dir、次のようになります: C:\dir>"my files"\run.bat C:\dir\my files\my files"\ え?最も内側のディレクトリ名が重複している"\ため、最後にいくつかの迷子の文字があることに注意してください。別の方法で試してみましょう: C:\dir>"my files\run.bat" C:\dir\my files\my files\ 浮遊文字はなくなりましたが、ディレクトリ名はまだ複製されています。これの説明は何ですか?どのディレクトリから呼び出されても同じ出力が得られるようにBATファイルを変更するにはどうすればよいですか? もちろん、私の実際のシナリオは、この単純化されたバージョンよりも複雑です。の値%~dp0は、他の文字列と連結され、環境変数に割り当てられ、他のスクリプトに引数として渡されます。