В папке images\
у меня есть следующие папки:
Usa\
Italy\
Japan\
и т. д..
Мне нужен скрипт, который создает .zip
для каждой из этих папок, поэтому у меня есть usa.zip
, italy.zip
, japan.zip
.
Как мне это сделать?
решение1
Вы можете использоватьWinRar-файлдля этого.
Выберите все ваши папки, щелкните правой кнопкой мыши и выберите Add to archive
. Теперь выберите опцию Put each file to separate archive
под вкладкой Files
:
Нажмите OK и все готово. Если вы хотите файлы .zip вместо .rar, просто выберите ZIP
на General
вкладке под Archive format
.
решение2
Я предполагаю, что это Windows, поскольку вы используете обратные косые черты.
Получать7za.exe(версия командной строки7-молния) и поместите его в свой %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"
решение3
Если вы используете Linux, вы можете использовать такой скрипт Bash:
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
Этот скрипт примет первый аргумент в качестве папки (в данном случае — images) и выполнит рекурсию на один уровень вглубь, чтобы получить все ваши папки (США, Италия и Япония) и заархивировать их в одном месте.
Он не удалит старые zip-файлы или исходные папки. Zip достаточно умен, чтобы обнаружить существующие zip-файлы и обновить их при повторном запуске. Однако, если вы удалите файл в исходных папкахЯ не будубыть удалены в zip-файлах. Вы можете обойти это поведение, удалив существующие файлы заранее.
решение4
ЭтототвечатькМвГУ меня сработало на Ubuntu:
Вы можете использовать этот цикл в
bash
:for i in */; do zip -r "${i%/}.zip" "$i"; done
i
— имя переменной цикла.*/
означает каждый подкаталог текущего каталога и будет включать в себя завершающий слеш в этих именах. Убедитесь, что вы находитесьcd
в правильном месте, прежде чем выполнять это."$i"
просто называет этот каталог, включая завершающий слеш. Кавычки гарантируют, что пробелы в имени каталога не вызовут проблем.${i%/}
похоже$i
, но с удаленным завершающим слешем, поэтому вы можете использовать это для создания имени zip-файла.Если вы хотите увидеть, как это работает, добавьте
echo
перед ,zip
и вы увидите, что команды будут напечатаны, а не выполнены.