Резервное копирование папки за последние 7 дней с помощью пакетного файла DOS

Я пытаюсь сделать скрипт, который будет делать копию папки (в Windows) каждый день в течение последних 7 дней. На 8-й день я хочу, чтобы он взял самую старую копию и перезаписал ее и т. д. и т. д., чтобы в любой момент у меня была 7-дневная «история» папки.

Теперь я сделал это ранее в Linux, просто сказав ежедневному сценарию bash скопировать папку в «/home/whatever-date +%u».

date +%u кстати выводит день недели. 1 для понедельника, 2 для вторника и т. д.

Для сравнения, команда даты DOS полностью отстает. Есть ли простой способ получить день недели (числовое значение) в пакетном файле DOS, или я должен просто сдаться и написать это на Java?


person Manos Dilaverakis    schedule 08.09.2009    source источник
comment
Я не знаю ответа на вашу проблему. Но я хотел бы предположить, что ваш вопрос также может быть применим к superuser.com или serverfault.com, потому что он не связан строго с программированием.   -  person Hauke    schedule 08.09.2009


Ответы (4)



Улучшенный вариант Криса без временного файла

set DOW=%date:~16,3%<br>
xcopy "C:\Source\*.*" "C:\Dest\%DOW%"
person Rodney Beede    schedule 19.10.2009

Переменная среды DATE (%DATE%) возвращает день недели (ПН, ВТ, СР, ...). Кажется, это было бы достаточно хорошо.

person JRL    schedule 08.09.2009
comment
Это отражает ваши настройки локализации. Здесь все, что я получаю, это ГГГГ-ММ-ДД, так что это не будет работать везде. - person Jay; 08.09.2009

Короткий ответ: Не то, чтобы я знал, нет, вы не можете получить день недели. Как уже упоминалось, вам лучше использовать Java.

Длинный ответ: вы можете посмотреть здесь, чтобы начать работу с файлами за заданный круг (неделя/7 дней), и используйте at или службу планировщика, чтобы запускать ее каждое воскресенье (в Windows-машина).

Надеюсь это поможет.

РЕДАКТИРОВАТЬ: я вижу, вы хотите запускать это каждый день и иметь другое поведение на 8-й день. Вы всегда можете оставить флаг в каталоге (скрытый файл с именем "______day", содержащий номер итерации) и проверить его, когда вы начнете задание копирования.
Если это от 1 до 6, увеличьте содержимое, если это 7, сделайте свою основную копию и поместите 1 в файл.
Что-то в этом роде.

person Jay    schedule 08.09.2009