Ответы:
Я предполагаю, что это Windows, так как вы используете обратную косую черту.
Получите 7za.exe (версия 7-zip для командной строки ) и поместите его в свой %PATH%
.
Затем запустите это в вашем Images\
каталоге:
for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
Или в пакетном сценарии:
for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
Предполагая, что вы работаете в Linux, вы можете использовать скрипт Bash, например так:
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
Этот сценарий примет первый аргумент в качестве папки, в данном случае изображения, и вернется ровно на один уровень, чтобы получить все ваши папки (США, Италия и Япония) и сжать их в одном месте.
Это не удалит старые файлы почтового индекса или исходные папки. Zip достаточно умен, чтобы обнаруживать существующие zip-файлы и обновлять их при повторном запуске. Однако если вы удалите файл в исходных папках, он не будет удален в zip-файлах. Вы можете обойти это, предварительно удалив существующие файлы.
Вы можете использовать Winrar для этого.
Выберите все ваши папки, щелкните правой кнопкой мыши и выберите Add to archive
. Теперь выберите опцию Put each file to separate archive
на вкладке Files
:
Нажмите ОК, и все готово. Если вы хотите .zip файлы вместо .rar, просто выберите ZIP
на General
вкладке под Archive format
.
Этот ответ от MvG работал для меня в Ubuntu:
Вы можете использовать этот цикл в
bash
:for i in */; do zip -r "${i%/}.zip" "$i"; done
i
это имя переменной цикла.*/
означает каждый подкаталог текущего каталога и будет включать в себя в конце имена косую черту. Убедитесь, что выcd
в нужном месте, прежде чем выполнять это."$i"
просто называет этот каталог, включая косую черту. Кавычки гарантируют, что пробелы в имени каталога не вызовут проблем.${i%/}
похоже,$i
но с удаленной косой чертой, так что вы можете использовать это для создания имени файла zip.Если вы хотите увидеть, как это работает, добавьте
echo
передzip
и вы увидите напечатанные команды вместо выполненных.