ドライブレターを変数に保存すると、予期しない出力が発生%0
します。
次のスニペットはC:\Temp\Testから実行されます。
@echo off
for %%I in ("%~0") do set "Target=%%~dI"
echo Target: %Target%
pushd %Target% && echo Current: %CD% || echo Failed to change dir!
Target
これは、現在のディレクトリではなく、正しい値を出力します。
Target: C:
Current: C:\Temp\Test
期待される出力:
Target: C:
Current: C:\
展開を遅らせて同じコードも試しましたが、これもうまくいきませんでした。ここで何が起こっているのか誰か説明できますか?