CD
バッチ スクリプトから環境変数を使用して現在の作業ディレクトリを取得するためのヒントが一般的に投稿されています。ただし、別のバッチ ファイルを実行CD
しても更新されません。call
次に、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
真実?