Q1: Могу ли я автоматизировать это, например, на уровне месяца или даже года
сохраняя ЧАСЫ молнии, как в этом весь смысл ...?
Способ автоматизировать это - использовать вложенные for
циклы.
Решение ниже для уровня месяца. Используйте тот же подход с другим уровнем вложенности для решения на уровне года.
Запустите следующий пакетный файл (RecurseDays.cmd) в выбранной вами папке Месяц:
@echo off rem start in a month folder and loop through the days for /d /r %%d in (*) do ( rem for each day, change directory to the day pushd %%d rem loop through the hours for /d %%h in (*) do ( rem zip the hour echo "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%%h.zip" ".\%%h\*" ) rem done with the day, change directory back to the month popd )
Заметки:
- Удалите
echo
из7z
команды, когда вы счастливы, что пакетные файлы, как ожидалось.
Q2: в настоящее время я переносил заархивированные почасовые файлы в холодное хранилище вручную
структура каталогов в месте назначения немного отличается от структуры в источнике. Есть ли возможность автоматизировать это?
Вы могли бы использовать robocopy
. Правильное место будет сразу после:
rem done with the day, change directory back to the month
Здесь вы можете перенести все часовые файлы за все дни месяца, в котором вы находитесь. Это robocopy
сохранит структуру каталогов, а также имеет возможность перемещать zip-файлы, если вы этого хотите (вместо того, чтобы просто копировать их).
Смотрите ссылку ниже для получения дополнительной информации.
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- for / d - условно выполнить команду на несколько каталогов / папок.
- pushd - изменить текущий каталог / папку и сохранить предыдущую папку / путь для использования командой POPD.
- popd - изменить каталог обратно на путь / папку, которая была сохранена последней командой PUSHD.
- robocopy - надежное копирование файлов и папок.