通常會發布tipp以使用批處理腳本中的CD
環境變量來獲取當前工作目錄。但CD
將不會更新時call
另一個批處理文件。然後cd
命令回顯另一批文件的新路徑,但%CD%
(或!CD!
)未更新。例如:何時更新CD環境變量?
@echo off
cd %~dp0
echo in %0: CD=%CD%
pause
call X:\testcall.cmd
保存此作爲C:\testcall.cmd
和X:\testcall.cmd
,然後運行C:\testcall.cmd
。你應該看到CD
的值沒有改變。這似乎不依賴於call
;沒有以下作品:
start /D <NEW_DIR> <OTHER_CMD_FILE>
start cmd /c <NEW_DIR>\<OTHER_CMD_FILE>
cmd /c <NEW_DIR>\<OTHER_CMD_FILE>
<NEW_DIR>\<OTHER_CMD_FILE>
cd %~dp0
pushd %~dp0
CD
將保持它的舊值,而cd
(命令)顯示正確的目錄。所以我設置CD
在開始腳本:
set CD=%~dp0
...同時假設CMD.EXE套CD
只有當這個變量尚未取消設置。真正?
你在哪裏調用方批次或稱爲批處理呼應'%CD%'? – jeb 2013-04-29 16:39:00
如果你用'set CD = ...'明確設置'CD',你不能訪問僞變量'CD' – jeb 2013-05-07 10:11:31
你不應該將你的例子保存爲_c:\ testcall.cmd_和_X:\ testcall。 cmd_,因爲_X:\ testcall.cmd_會以無限循環結束 – jeb 2013-05-08 09:50:16