7zip рекурсивная распаковка работает хорошо в CMD, но не в пакетном режиме

332
suyash sikarwar

Я использую эту команду ниже, чтобы рекурсивно разархивировать из исходной папки ( D:\cnosftp\) и поместить извлеченный файл в ту же подпапку.

FOR /R "D:\cnosftp\" %I IN (*.gz) DO "C:\Program Files\7-Zip\7z.exe" x "%I" -aoa -o"%~dpI" 

Это работает хорошо при запуске в CMD - но когда одна и та же команда помещается в командный файл и запускается - она ​​запускается, но закрывается в мгновение ока без каких-либо действий. Есть идеи, что я здесь делаю? Или кто-нибудь может сказать, как обернуть его в пакетный файл.

2
Используйте два знака процента в команде FOR для переменных. , , `FOR / R" D: \ cnosftp \ "%% I IN (* .gz) DO" C: \ Program Files \ 7-Zip \ 7z.exe "x" %% I "-aoa -o" %% ~ dpI "` чтобы запустить его как командный файл. Pimp Juice IT 5 лет назад 0

1 ответ на вопрос

0
TOOGAM

Вместо этого попробуйте запустить:

FOR / R "D: \ cnosftp \"% I IN (* .gz) DO повторяет "C: \ Program Files \ 7-Zip \ 7z.exe" x "% I" -aoa -o "% ~ dpI"

Убедитесь, что результат соответствует вашим ожиданиям.

Подсказка: вероятно, не будет. Замените% на %% по мере необходимости. (Если два% не работают, попробуйте три или четыре, но я думаю, что двух может быть достаточно.)

Вероятная проблема заключается в том, что команде FOR может потребоваться дополнительный% при запуске из пакетного файла. Использование команды echo для вывода того, какую команду вы фактически будете выполнять, часто помогает определить, какие переменные расширяются так, как вы хотите / нуждаетесь в них, и какие переменные требуют добавления% s.

Похожие вопросы