web-dev-qa-db-ja.com

バッチファイルの引数のパーセント記号(%および%%)はどういう意味ですか?

これが何を意味するのかわからないので、何かが足りないと思います。

例:

for /D %%A in (*) do "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

その行は7Zipのコマンドラインバージョンを使用して個々のフォルダーを圧縮するはずでしたが、このコンテキストでの%%Aの意味に困惑しています。

11
Jim Kieger

for コマンドにはプレースホルダーが必要なので、後でクエリで使用するために変数を渡すことができます。ここでは、プレースホルダー%Aを使用していることを示しています。 %%Aを使用しているのは、バッチファイル内(これが見つかった場所だと思います)で%は特別な意味を持っているため、%%を2回実行する必要があるためです。 forコマンドに渡される単一の%

コマンドの実行内容を実際に分解するために、コマンドには2つの部分があります。

 for /D %%A in (*) do .....

この部分は、現在のフォルダー内のすべてのフォルダーについて、次のコマンドを実行して、%%Aを現在処理中のフォルダーの名前に置き換えます。

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

この部分が言うことは、コマンド"\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"を実行し、2つの%%Aを、現在処理している現在のレコードに置き換えることです。

12

それは変数です。

この特定の例では、 FORループのディレクトリオプション を使用して、ディレクトリを反復処理し、%% Aに割り当てています。

これもコマンドラインの例ではなく、バッチファイルの例です。バッチファイルでは%% Aを使用する必要がありますが、コマンドラインでは%Aを使用するだけです。

0
ernie

シナリオでは、%% Aは、「/」ループが反復しているもの(/ Dはディレクトリを示します)のプレースホルダーです。したがって、ループの各反復で、%% Aはディレクトリの1つです。

バッチコードでは%ではなく%%が表示されます。コマンドプロンプトでは、%%ではなく%が使用されます。

したがって、バッチファイルコードをコマンドプロンプトにコピーして、%%を使用して実行するとエラーが発生し、その逆も同様です。

0
Mechaflash