I think I'm missing something because I can't seem to find what this means.


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

That line was supposed to use a command line version of 7zip to compress individual folders, but I'm stumped as to what %%A means in this context.


The for command needs a placeholder so you can pass along variables for use later in the query, we are telling it use the placeholder %A, the reason the code you saw uses %%A is because inside a batch file (which I assume is where you found this) the % has a special meaning, so you must do it twice %% so it gets turned in to a single % to be passed to the for command

To actually break apart what the command is doing, there is two parts to the command:

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

What this part says is for every folder in the current folder execute the following command replacing %%A with the name of the currently processing folder.

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

What this part says is execute the command "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A" and replace the two %%A's with the current record we are processing.

  • Just to nitpick - the /D on the for loop will limit the * wildcard to directories, not "every file in this folder and every subfolder" (assuming Command Extensions are enabled). – ernie Nov 7 '13 at 17:35
  • @ernie you are correct, I was looking at the /R switch on the help page, I have corrected my answer. – Scott Chamberlain Nov 7 '13 at 17:36
  • Thank you for that, it shows how noobish this seems, but it's pretty archaic stuff that I have to dig through a couple online manuals for. – Jim Kieger Nov 7 '13 at 17:48

It's a variable.

That particular example uses the directory option of a FOR loop, iterating through the directories and assigning them to %%A.

That's also not a command-line example, but a batch file example. In batch files, you need to use %%A, while on the command-line, you'd just use %A.


In your scenario, the %%A is a placeholder for what the "for" loop is iterating over (which the /D indicates directories). So each iteration of the loop, %%A is one of the directories.

You'll see %% instead of % in batch code. You'll see % instead of %% used in your command prompt.

So know that if you copy over a batch file code into a command prompt and run it with %% being used, it will error, and vice versa.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.