pushd
ここや他のサイトに関する多くの質問と回答を読みましたが、その圧倒的多数が UNC パスの問題に言及しています。しかし、私は別の問題を抱えており、ヒントが 1 つも見られませんでした。
Windows 10 x64 Enterprise (バージョン 1809) を使用して、コンソール ウィンドウ内から次のバッチ ファイルを実行しています。
@echo off
setLocal EnableDelayedExpansion
set DestDir=c:\windows
pushd %DestDir%
私の問題は、それpushd
が間違った方法で実行されているか、まったく実行されていないように見えることです。これは、バッチ ファイルが実行された時点ではなく、実行前のディレクトリにいることを意味します。c:\windows
問題を理解するための必死の試みでいくつかのことを試しました(これらのテストが意味をなさないことを知っています):
- 引用
c:\windows
符で囲みます (set DestDir="c:\windows"
) - 引用
%DestDir%
符で囲みます (pushd "%DestDir%"
) - 遅延拡張がオンになっているため
!
の代わりに使用されます。%
pushd "!DestDir!"
- コンソール ウィンドウを起動しました 管理者として内部からバッチ ファイルを実行しました
ただし、遅延拡張をオンにしないと、期待どおりにpushd
機能します。つまり、次のバッチ ファイルを実行した後、
@echo off
set DestDir=c:\windows
pushd %DestDir%
c:\windows
バッチファイルを実行する前にいたディレクトリに関係なく、実際に転送されました。
私は今のところかなりばかげていると思いますが、一生これに頭を悩ませることはできません. pushd
遅延拡張がアクティブな場合に失敗する理由を誰か説明してもらえますか?