dos バッチ ファイルの通常のエスケープ文字は、キャレット、^
. ただし、%
変数の区切り文字であるパーセントの場合、エスケープはパーセントを 2 倍にすることです%%cd%%
。ループ内でパラメーター拡張を使用すると状況が変わります。を放出するfor
代わりに、ループの外側で、置換を実行し、 を放出します。%%~dpnx0
%~dpnx0
D:\Scripts\foo.py
バッチ ファイルのデモを次に示します。
@echo off
echo This is a pipe: ^|
echo Use this var for the current directory: %%cd%%
echo Use this to echo full path of running batch file: %%~dpnx0
for %%a in (foo.py baz.py) do (
echo @python %%~dpnxa ^> %%~na.bat
)
これらは私が得る結果です:
This is a pipe: |
Use this var for the current directory: %cd%
Use this to echo full path of running batch file: %~dpnx0
@python d:\Scripts\foo.py > foo.bat
@python d:\Scripts\baz.py > baz.bat
しかし、これは私が欲しいものです:
This is a pipe: |
Use this var for the current directory: %cd%
Use this to echo full path of running batch file: %~dpnx0
@python %~dpnxa > foo.bat
@python %~dpnxa > baz.bat
パーセントを2倍、3倍、4倍にしてみましたが、全体にキャレットが散在していますが、すべて成功しませんでした。