-1

Я пытаюсь создать резервную копию для сохранения игры 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 ответа2

1

Вы можете использовать time для создания имени каталога:

set butime=%time:~0,2%%time:~3,2%%time:~6,2%
mkdir %butime%
1

Если вы не возражаете делать имена каталогов на основе даты и времени (что, я думаю, вы не возражаете в этой ситуации), возможно, этот пакетный файл сработает. Кроме того, это поможет немного автоматизировать это. Причина, по которой я проверяю, работает ли игра, заключается в том, что нет никакой реальной причины делать резервную копию, когда игра была отключена некоторое время.

  1. Создайте этот пакетный файл:

    @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
    
  2. Создайте задачу (для этого есть два маршрута):

    1. С помощью планировщика заданий (возможно, у вас будут пункты меню, переведенные на ваш родной язык, если у Microsoft вообще есть смысл):
      1. Введите taskschd.msc в строке поиска в меню "Пуск" и нажмите Enter.
      2. Нажмите "Библиотека планировщика заданий" на левой боковой панели, а затем нажмите "Создать новую задачу" на правой боковой панели.
      3. Введите имя, которое вы хотите для задачи.
      4. Перейдите на вкладку "Триггеры" и нажмите «Новый ...» внизу.
      5. Выберите «При создании / изменении задачи» в раскрывающемся меню "Начать задачу".
      6. В области "Дополнительные параметры" установите флажок «Повторять задачу каждый:» со следующими параметрами:
        • X минут (ваш выбор здесь)
        • Продолжительность: неопределенно
      7. Перейдите на вкладку "Действия" и нажмите «Создать ...» внизу.
      8. Выберите "Запустить программу" в раскрывающемся меню "Действие", если она еще не выбрана.
      9. В поле «Программа / скрипт:» введите %comspec% /t:0C /c "Drive:\Dir\To\YourBatchFile.bat" .
      10. На вкладке "Условия" убедитесь, что ничего не выбрано. Некоторые из опций, если они отмечены, быстро и полностью сведут на нет смысл всей этой работы, особенно если вы используете ноутбук, а также "Запускать только при включенном питании от компьютера" и «Остановить, если компьютер переключается». к заряду батареи "проверены.
      11. Нажмите "ОК" внизу, чтобы сохранить задачу.
    2. Через командную строку
      1. Введите это в командной строке и нажмите Enter (замените% DirToBat% на действительный каталог):
        schtasks / create / tn WhatYouWantToNameYourTask "/ tr" '% comspec%' / t: 0C / c \"% DirToBat% \" "/ sc минута / мес. X
        
        Обратите внимание, что кавычки, передаваемые в качестве аргументов в% comspec%, ДОЛЖНЫ быть экранированы, как показано. Кроме того, количество минут здесь можно контролировать более точно, чем в пользовательском интерфейсе.

Одно замечание: командный файл записывается так, что он останавливается сразу после того, как игра не запускается, и проверяет ее перед подготовкой к резервному копированию чего-либо. Если вы этого не хотите, выньте разделы, отмеченные закомментированными знаками равенства: %= ============= =%

Кроме того, не стесняйтесь переводить линии echo если хотите.

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