2

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

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

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

1 ответ1

0

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

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

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

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

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

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