Разархивируйте все файлы в папке с помощью 7zip в строке CMD

я использую эти строки для извлечения всех файлов JAR в папке, пункт назначения может быть одним и тем же:

<b>set SEVENZIP_EXE=C:\Program Files\7-Zip\<br>
set INPUT_FOLDER=D:\jar

for /f "tokens=1-2 delims=. " %%a in ('dir *.jar /a-d/b') do "%SEVENZIP_EXE%" x -aoa -o"%INPUT_FOLDER%" %%a.%%b

Но все, что я получил, это: %%a было неожиданным в это время. !!

есть предложения ?
Спасибо


person Rami Alshoubaki    schedule 24.09.2013    source источник


Ответы (1)


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

set INPUT_FOLDER=D:\jar

for /f "tokens=1-2 delims=. " %a in ('dir *.jar /a-d/b') do "%SEVENZIP_EXE%" x -aoa -o"%INPUT_FOLDER%" %a.%b

Я также заметил, что вы неправильно указали путь к исполняемому файлу 7-zip:

set SEVENZIP_EXE=C:\Program Files\7-Zip\7z.exe

Если это не работает, попробуйте запустить его как пакетный файл.

@echo off

set SEVENZIP_EXE=C:\Program Files\7-Zip\7z.exe
set INPUT_FOLDER=D:\jar

for /f "tokens=1-2 delims=. " %%a in ('dir *.jar /a-d/b') do "%SEVENZIP_EXE%" x -aoa -o"%INPUT_FOLDER%" %%a.%%b
person konsolebox    schedule 24.09.2013
comment
Хм, а что делает tokens=1-2? Команда dir возвращает только один элемент в строке, используя аргументы /a-d/b, не так ли? Аргумент delims затем разделяет каждую строку точкой, а аргумент tokens указывает командной строке вернуть обе части в инструкции do как %a и %b? - person Christian; 31.03.2015