13

В папке images\ меня есть следующие папки:

  • Usa\
  • Italy\
  • Japan\

так далее..

Мне нужен скрипт, который создает .zip для каждой из этих папок, поэтому у меня есть usa.zip , italy.zip , japan.zip .

Как я могу это сделать?

3 ответа3

8

Я предполагаю, что это 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"
7

Вы можете использовать Winrar для этого.

Выберите все ваши папки, щелкните правой кнопкой мыши и выберите Add to archive . Теперь выберите опцию Put each file to separate archive на вкладке Files:

Нажмите ОК, и все готово. Если вам нужны файлы .zip вместо .rar, просто выберите ZIP на вкладке General разделе Archive format .

5

Предполагая, что вы работаете в 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-файлах. Вы можете обойти это, предварительно удалив существующие файлы.

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