1

У меня следующий цикл, и я хотел бы помочь с расширением его функциональности.

for /D %d in (*.*) do "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%d.zip" ".\%d\*"

В настоящее время в структуре каталогов, таких как ниже:

Лог-файлы> Год> Месяц> День> Часы

Я вручную перехожу к каталогу « День», выполняю цикл «для» в командной строке Windows, и мой цикл создает сжатые каталоги каждого каталога « Час » в выбранный день. Затем я вручную перехожу к следующему дню и повторяю до тех пор, пока я не заархивировал весь месяц.

Средой является Server 2003, я могу использовать ТОЛЬКО командную строку (без PowerShell или области для установки) и не могу использовать сторонние «решения».

Q1: Могу ли я автоматизировать это, например, на уровне месяца или даже года, сохранив почтовый индекс ЧАСЫ, поскольку в этом весь смысл ...?

Вопрос 2: В настоящее время я переносил заархивированные почасовые файлы в холодное хранилище вручную - структура каталогов в месте назначения немного отличается от структуры в источнике. Есть ли возможность автоматизировать это?

Заранее спасибо за ваши предложения

1 ответ1

0

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 - надежное копирование файлов и папок.

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