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
CDcd(コマンド)は正しいディレクトリを表示しますが、古い値を保持します。したがってCD、スクリプトの最初に次のように設定します。
set CD=%~dp0
...この変数がまだ設定されていない場合にのみcmd.exeが設定されると仮定します。CD真実?