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

2

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

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

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

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

Ответы:

0

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

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

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

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

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

TOOGAM
источник