2017-12-23 37 views
-5

매일 정기적으로 백업을 만들기 위해 배치 파일을 사용하고 싶습니다. 이 폴더를 고려5 개의 최신 백업 폴더 만 유지하고 이전 폴더를 삭제하는 방법은 무엇입니까?

내부에 게임 폴더가 있습니다
C:\game folder 
D:\backup1 
D:\backup2 
D:\backup3 
D:\backup4 
D:\backup5 

: 나는

  • 가 확인하는 배치 파일이 필요

    c:\game folder\remote\      »Folder 
    c:\game folder\remote\remotecache.vdf  ».vdf file 
    c:\game folder\remote\FullProfile   »No extension file 
    c:\game folder\remote\ProfileSaves\   »Folder 
    c:\game folder\remote\ProfileSaves\1054678 »No extension file 
    

    경우 backup1 (폴더 또는 그 안에있는 파일 중 하나에 타임 스탬프) 은 1 일 이상이고 '예'인 경우 계속 진행하고 그렇지 않으면 중지합니다.

  • backup5 폴더 또는 그 내용을 삭제합니다. backup4의 폴더/파일을 backup5 폴더에 복사합니다.
  • backup4 폴더 또는 그 내용을 삭제합니다. backup3의 폴더/파일을 backup4 폴더에 복사합니다.
  • backup1 폴더까지.
  • 마지막으로 게임 폴더를 backup1 폴더로 복사합니다.

가능합니까?

내 생각에 예약 된 작업 (Windows)을 실행하고 .bat 파일은 backup1의 타임 스탬프 또는 그 안에있는 파일을 실제 날짜와 비교하고 backup1이 오래된 지 확인하여 백업이 필요한지 여부를 확인합니다. 하루 이상.


아래 코드를 고려하여 이전에 설명한대로 작동하도록하려면 어떻게해야합니까?

@echo off 

echo 
echo ------------------------------------------------------------------ 
echo Daily script that backs-up game folder 
echo ------------------------------------------------------------------ 

echo ------------------------------------------------------------------ 
echo Calculation of date 
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set "dt=%%a" 
set "YY=%dt:~2,2%" 
set "YYYY=%dt:~0,4%" 
set "MM=%dt:~4,2%" 
set "DD=%dt:~6,2%" 
set "HH=%dt:~8,2%" 
set "Min=%dt:~10,2%" 
set "Sec=%dt:~12,2%" 

set datestamp=%YYYY%%MM%%DD% 
set timestamp=%HH%%Min%%Sec% 
set fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec% 

어떻게 backup1 폴더의 타임 스탬프를 확인하는 여기 경우 어떤 종류를 만들기 위해하고 일일 세 이상이라면 아래의 코드를 실행? @path을 설정하는 방법은 무엇입니까?

echo ------------------------------------------------------------------ 
echo Delete old backup folder 
FORFILES -p "" /D -1 /C "cmd /c IF @isdir == TRUE rd /S /Q @path" 

echo ------------------------------------------------------------------ 
echo Make new Backup folder 
md D:\Backup1 

echo ------------------------------------------------------------------ 
echo Copy files into backup folder 
xcopy /s /y "C:\game folder" "D:\Backup1" 
+0

'dir/Tw/Od'의 출력을보십시오. – jwdonahue

답변

0

이 일일 백업 작업의 간단한 배치 파일은 어떻게됩니까?

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

set "FolderToBackup=C:\game folder" 
set "BackupParentFolder=D:" 
set "BackupNamePrefix=Backup_" 

if not exist "%FolderToBackup%\" goto EndBackup 

rem Get region independent current date in format YYYY-MM-DD. 
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "FolderNameDate=%%I" 
set "TodayBackupFolder=%BackupParentFolder%\%BackupNamePrefix%%FolderNameDate:~0,4%-%FolderNameDate:~4,2%-%FolderNameDate:~6,2%" 

rem Was a backup folder created already today? 
if exist "%TodayBackupFolder%\" goto EndBackup 

rem Create a backup of the folder to backup by doing a simple folder copy. 
%SystemRoot%\System32\xcopy.exe "%FolderToBackup%" "%TodayBackupFolder%\" /C /H /I /K /Q /R /S /Y >nul 

rem Keep only the newest 5 backup folders and delete all others. 
for /F "skip=5 delims=" %%I in ('dir "%BackupParentFolder%\%BackupNamePrefix%????-??-??" /AD /B /O-N 2^>nul') do rd /Q /S "%BackupParentFolder%\%%I" 

:EndBackup 
endlocal 

그것은 %date% produces different result in batch file when run from Scheduled Tasks in Server 2016에 대답에 자세히 설명 된대로 형식 YYYY-MM-DD에 현재 날짜를 얻기 위해 명령 에게 WMIC를 사용합니다. 국제 날짜 형식 YYYY-MM-DD은 읽기 쉽습니다. 또한 폴더 이름에서이 형식의 날짜를 사용할 때 이름순으로 알파벳 순으로 정렬 된 폴더 목록은 폴더가 작성된 날짜별로 자동 정렬되기 때문에 큰 이점이 있습니다. ...

배치 파일 옆에 체크하면 백업 폴더를 만들 때 알고 반드시 좋은이며, 그래서, 2017-12-22, 2017-12-23, 2017-12-24를 사용하는 ... 대신 1의, 2, 3을, 더 나은 오늘 백업 날짜가 폴더 날짜에 국제 날짜 형식으로 포함되어 있기 때문에 백업 폴더가 이미 간단하게 만들어졌습니다. 동일한 날짜에 백업이 이미 생성 된 경우 배치 파일은 그 밖의 작업을 수행하지 않습니다.

그렇지 않으면 백업 할 폴더의 백업이 구성된 상위 디렉토리에 구성된 접두어로 이루어집니다. BackupParentFolder을 배치 파일에 지정해야하지만 을 전혀 정의 할 수 없습니다.

백업을 DIR은 최신 백업 폴더를 의미하는 이름으로 폴더 이름 분류 역으로 백업 날짜와 모든 백업 폴더를 목록에 대해 실행되는 명령을 한 후 DIR 먼저 가장 오래된 마지막으로 출력됩니다.

5 개의 최신 백업이 무시되고 다른 모든 백업 폴더가 삭제됩니다. 이는 일반적으로 기존 백업 폴더 목록에서 하나의 디렉토리를 제거한다는 의미입니다. 이 매우 간단하지만 매우 효과적인 백업 전략은 Bat file to delete files only when younger files are present의 대답에서 자세히 설명합니다.

사용 된 명령과 그 작동 방법을 이해하려면 명령 프롬프트 창을 열고 다음 명령을 실행하고 각 명령에 대해 표시된 모든 도움말 페이지를 모두주의 깊게 읽어야합니다.

  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • rd /?
  • ,251 또한
  • set /?
  • setlocal /?
  • wmic /?
  • wmic os /?
  • wmic os get /?
  • wmic os get localdatetime /?
  • xcopy /?

읽기는 Microsoft 약 Using Command Redirection Operators에 대한 설명은 2>nul입니다. Windows 명령 인터프리터 프로세스가 별도의 명령 과정에 포함 된 dir 명령 줄을 실행위한 명령 을 실행하기 전에이 명령 줄이 시작되면 리디렉션 연산자 > 명령 라인에 대한 에 캐럿 문자 ^로 이스케이프해야합니다 리터럴 문자로 해석 할 백그라운드에서.