2013-06-03 1 views
0

배치 파일을 사용하여 솔루션을 찾고 다음을 수행합니다. 나는 하루 후 이름이 지정된 폴더에서 매일 데이터베이스의 백업을 수행합니다.배치를 사용하여 보관할 가장 오래된 10 개의 백업 이동

2013-05-13

. 이것은 이미 괜찮습니다입니다.

이제 문제 : 내가 보관 폴더 (모든 파일 포함) 가장 오래된 10 개 폴더를 결합하려는 달의 끝에서

. 가장 오래된 폴더 10 개의 모든 파일을 보관 폴더로 이동해야합니다. 동일한 파일을 덮어 써야하며 (오래된 것부터 새로 만들기) 폴더 (이제 비어 있음)도 제거해야합니다.

안부

답변

0

이렇게하면 가장 오래된 10 개의 폴더의 내용을 이전에 존재해야하는 보관 폴더로 옮기고 최신 복사본을 덮어 쓰고 폴더를 제거해야하지만 백업 폴더의 하위 디렉터리는 필요하지 않습니다.

테스트 후 배치 파일을 예약 할 수 있습니다.

@echo off 
setlocal enabledelayedexpansion 
cd /d "d:\source\folder" 
set "c=0" 
for /f "delims=" %%a in ('dir /ad /b /od') do (
set /a c=c+1 
if !c! LEQ 10 (
    echo "%%a" 
    move /y "%%a\*.*" "D:\destination\archive\" >nul 
    rd "%%a" 
) 
) 
pause 
+0

감사합니다. 잘 작동합니다. 정렬 방향 만이 라운드입니다. 가장 오래된 아카이브 대신 새로운 아카이브로 이동하십시오. 고치다. – ozz

+0

고마워. 올바른 변경은/od를 사용하는 것이지만 이름 정렬이 정확하면/on이 또한 작동 할 수 있기 때문입니다. 나는 그 지위를 편집했다. – foxidrive

0

가장 쉬운 방법은 mv, tailhead 유틸리티

그런 다음

dir /b /AD /OD|tail -n 10 > temp.txt 

는 현재

당신에게 10 최신 디렉토리의 목록을 제공받을 UnixUtils를 설치하는 것
for /f "delims=" %%i in (temp.txt) do echo D|mv -f "c:\source\%%i" "c:\destination\%%i" /y >temp.bat 

은 어딘가에서 움직이는 스크립트를 생성합니다.

call temp.bat 

호출합니다.