Пакетное резервное копирование команд в разных папках
Я пытаюсь создать резервную копию для сохранения игры Assassins Creed 3 каждые x минут, но папка и ее файлы перезаписываются каждый раз, пожалуйста, предложите мне код, чтобы каждая резервная копия находилась в разных папках. Извините за плохой английский.
cls
@echo off
color 0C
echo.
echo Start Backup
echo.
pause
:start
cls
echo.
echo Backup started
echo.
xcopy "source" "destination" /s /y /e
timeout /t 5
goto start
2 ответа
Вы могли бы использовать time
создать имя каталога:
set butime=%time:~0,2%%time:~3,2%%time:~6,2%
mkdir %butime%
Если вы не возражаете делать имена каталогов на основе даты и времени (что, я думаю, вы не возражаете в этой ситуации), возможно, этот пакетный файл сработает. Кроме того, это поможет немного автоматизировать это. Причина, по которой я проверяю, работает ли игра, заключается в том, что нет никакой реальной причины делать резервную копию, когда игра была отключена некоторое время.
Создайте этот пакетный файл:
@echo off setlocal enabledelayedexpansion enableextensions cls rem Color is taken care of in the task call. %= ============================================================== =% rem * Take this section out if you want it to make backups even when rem * you're not playing the game. echo Checking if game is running... md "%tmp%\cmdtmp" set tmpdir=%tmp%\cmdtmp tasklist /fo csv /nh /fi "imagename eq %NameOfACExectuable%" /fi "status eq running" > "%tmpdir%\tmp.txt" set /p tasklist= < "%tmpdir%\tmp.txt" del "%tmpdir%\tmp.txt" rd "%tmpdir%" /s /q set tasklist= set tmpdir= %= ============================================================== =% set image= for /f "tokens=1 delims=," %%I in (!tasklist!) do ( set tmpvar=%%~I for %%J in (!tmpvar!) do if not defined image set image=%%~xJ rem * The file extension needs checked so image doesn't become rem * set with output saying that no files have been found. rem * This section has to be a bit complicated because there rem * isn't any straightforward way to get an extension out of rem * an environment variable. ) if not defined image goto :eof echo. echo Backup has now started. rem * This is to ensure that the date/time format is consistent rem * (we likely don't use the same date/time format). set X= for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x set datetime=!X:~0,4!!X:~4,2!!X:~6,2!_!X:~8,2!!X:~10,2!!X:~12,2! set bkupdir="%WhereverYouWantToMakeTheBackup%" md "%bkupdir%\savebackup_!datetime!" set thisbkupdir="%bkupdir%\savebackup_!datetime!" xcopy "%WhereYourACGameSaveIs%" "!thisbkupdir!" /e /y /c /q echo. echo Backup completed. Exiting... timeout /t 5 /nobreak exit
Создайте задачу (для этого есть два пути):
- С помощью планировщика заданий (у вас, вероятно, есть пункты меню, переведенные на ваш родной язык, если у Microsoft вообще есть смысл):
- Введите taskschd.msc в строке поиска в меню "Пуск" и нажмите Enter.
- Нажмите "Библиотека планировщика заданий" на левой боковой панели, а затем нажмите "Создать новую задачу" на правой боковой панели.
- Введите имя, которое вы хотите для задачи.
- Перейдите на вкладку "Триггеры" и нажмите "Новый..." внизу.
- Выберите "При создании / изменении задачи" в раскрывающемся меню "Начать задачу".
- В области "Дополнительные параметры" установите флажок "Повторять задачу каждые:" со следующими параметрами:
- X минут (ваш выбор здесь)
- Продолжительность: неопределенно
- Перейдите на вкладку "Действия" и нажмите "Создать..." внизу.
- Выберите "Запустить программу" в раскрывающемся меню "Действие", если она еще не выбрана.
- В поле "Программа / скрипт:" введите
%comspec% /t:0C /c "Drive:\Dir\To\YourBatchFile.bat"
, - На вкладке "Условия" убедитесь, что ничего не выбрано. Некоторые из опций, если они отмечены, быстро и полностью сведут на нет смысл всей этой работы, особенно если вы используете ноутбук, и оба варианта: "Пуск только при включенном питании от компьютера" и "Останов, если компьютер переключается". к заряду батареи "проверены.
- Нажмите "ОК" внизу, чтобы сохранить задачу.
- Через командную строку
- Введите это в командной строке и нажмите Enter (замените%DirToBat% на фактический каталог):
schtasks / create / tn WhatYouWantToNameYourTask "/ tr" '% comspec%' / t: 0C / c \ "%DirToBat% \" "/ sc минута / мес. X
Обратите внимание, что кавычки, передаваемые в качестве аргументов в% comspec%, ДОЛЖНЫ быть экранированы, как показано. Кроме того, количество минут здесь можно контролировать более точно, чем в пользовательском интерфейсе.
- Введите это в командной строке и нажмите Enter (замените%DirToBat% на фактический каталог):
- С помощью планировщика заданий (у вас, вероятно, есть пункты меню, переведенные на ваш родной язык, если у Microsoft вообще есть смысл):
Одно замечание: командный файл записывается так, чтобы он останавливался сразу после того, как игра не запущена, и он проверяет ее, прежде чем делать какие-либо приготовления для резервного копирования. Если вы этого не хотите, то удалите разделы, отмеченные закомментированными знаками равенства: %= ============= =%
Кроме того, не стесняйтесь переводить echo
линии, если хотите.