まず、私はこのトピックしかし、私はそれを理解できませんでした。
質問 :
D:\path\to\file.bat
次の内容のバッチ ファイルがあります。
echo %cd%
pause
出力は次のようになります:
C:\
それは違いないD:\path\to
何が間違っているのでしょうか?
ベストアンサー1
システムの読み取り専用変数は、%CD%
バッチ ファイルの場所ではなく、バッチの呼び出し元のパスを保持します。
ユーザーが入力したバッチ スクリプト自体の名前は、%0
(例scripts\mybatch.bat
) を使用して取得できます。パラメータ拡張これに を適用して、%~dp0
バッチ スクリプトへのドライブとパス (例W:\scripts\
) を返し、%~f0
完全なパス名 (例 ) を返しますW:\scripts\mybatch.cmd
。
次の構文を使用すると、バッチ スクリプトと同じフォルダー内の他のファイルを参照できます。
CALL %0\..\SecondBatch.cmd
これはサブルーチンでも使用でき、Echo %0
呼び出しラベルが与えられますが、echo "%~nx0"
バッチ スクリプトのファイル名も与えられます。
変数が展開されると%0
、結果は引用符で囲まれます。