11

Я думаю, что что-то упустил, потому что не могу понять, что это значит.

Пример: for /D %% A in (*) do "\7za.exe" u -t7z -m9 = LZMA2 "%% A.7z" "%% A"

Эта строка должна была использовать версию 7zip для командной строки для сжатия отдельных папок, но я озадачен тем, что означает %% A в этом контексте.

3 ответа3

11

Команде for требуется заполнитель, поэтому вы можете передавать переменные для использования позже в запросе. Мы говорим, что использовать заполнитель %A Причина, по которой код, который вы видели, использует %%A заключается в том, что внутри пакетного файла (который я предполагаю, что где вы нашли это) % имеет особое значение, так что вы должны сделать это дважды %% чтобы он превратился в один % который будет передан команде for

Чтобы фактически разбить на части то, что делает команда, у команды есть две части:

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

Эта часть говорит, что для каждой папки в текущей папке выполните следующую команду, заменив %%A именем текущей обрабатываемой папки.

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

Эта часть говорит, что выполните команду "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A" и замените два %%A текущей записью, которую мы обрабатываем.

0

Это переменная.

В этом конкретном примере используется параметр каталога цикла FOR, который выполняет итерацию по каталогам и присваивает их %% A.

Это также не пример командной строки, а пример пакетного файла. В пакетных файлах вам нужно использовать %% A, а в командной строке вы просто будете использовать% A.

0

В вашем сценарии %% A является заполнителем для того, что повторяет цикл for (который /D указывает на каталоги). Таким образом, на каждой итерации цикла %% A является одним из каталогов.

Вы увидите %% вместо% в коде пакета. В командной строке вы увидите% вместо %%.

Поэтому знайте, что если вы скопируете код командного файла в командную строку и запустите его с использованием %%, произойдет ошибка, и наоборот.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .