2013-05-08 2 views
0

NAS 폴더를 정리하고 정리하는 중입니다.Windows 일괄 처리 - x 폴더 + 내용을 다른 폴더로 이동

그러나 1800 개가 넘는 폴더가있는 폴더가 있습니다. 최대 18 개의 폴더에 최대 100 개의 폴더가 포함되어 있어야합니다. 이동 된 폴더의 이름은 관련이 없지만 최상위 레벨은 순차적이어야합니다. 모든 폴더 내용은 함께 이동해야합니다.

또한 배치 파일이 필요합니다.이 배치 파일도 이와 반대입니다.

이 이유가 필요한 이유는 폴더 및 폴더 콘텐츠를 색인화하고 구성하는 데 사용하는 프로그램이 100 개가 넘는 폴더가있는 폴더를 쉽게 처리 할 수 ​​없기 때문입니다.

나는 이미 자신을 시험해 보았지만 완전히 끝내 버렸다.

+0

독자적인 조사가 필요합니다. – Endoro

답변

0

이와 비슷한?이

첫 번째 버전은 반복적으로 내려 :

편집 ...

@ECHO OFF 

SET destination=c:\temp\ 
SET source=c:\windows\system32\ 
SET dcount=0 
SET fcount=0 
SETLOCAL ENABLEDELAYEDEXPANSION 

MKDIR %destination%dir%dcount% 


FOR /f "tokens=*" %%f in ('DIR /b /s /a:d "%source%*"') do (
    SET str=%%f 
    SET str=!str:%source%=! 
    MKDIR %destination%dir!dcount!\!str! 
    COPY %%f %destination%dir!dcount!\!str! 1> NUL 
    SET /a fcount=!fcount!+1 
    IF !fcount! EQU 100 (
    SET fcount=0 
    SET /a dcount=!dcount!+1 
    MKDIR %destination%dir!dcount! 
) 
) 

ECHO DONE. 

는 물론 소스 및 대상 변경해야하며, 전성 검사하려는 시도가 없습니다 또는 오류를 정상적으로 실패 모든 하위 디렉토리를 제거하고 각각을 새로운 구조로 이동시킵니다. 기본적으로 내부 중첩 및 조직을 파괴합니다. 이 두 번째 것은 소스 디렉토리의 즉각적인 서브 디렉토리 안에 중첩 된 서브 디렉토리의 내부 구조를 보존합니다.

@ECHO OFF 

SET destination=c:\temp\ 
SET source=c:\windows\system32\ 
SET dcount=0 
SET fcount=0 
SETLOCAL ENABLEDELAYEDEXPANSION 

MKDIR %destination%dir%dcount% 


FOR /f "tokens=*" %%f in ('DIR /b /a:d "%source%*"') do (
    MKDIR %destination%dir!dcount!\%%f 
    XCOPY %source%%%f %destination%dir!dcount!\%%f /e /y 
    SET /a fcount=!fcount!+1 
    IF !fcount! EQU 100 (
    SET fcount=0 
    SET /a dcount=!dcount!+1 
    MKDIR %destination%dir!dcount! 
) 
) 

ECHO DONE. 
0

내 제한된 테스트에서 작동하며 UNDO.BAT을 생성하여 폴더를 원래 위치로 복원합니다. 당신이 원하는대로 행동하는지 스스로 테스트하십시오.

num

f이 폴더를 들고 만드는 데 사용되는 각각의 최상위 폴더에서 원하는 폴더의 수입니다 - 모든이있는 폴더에 001, 002, 003 등이

시작을 이동할 서브 디렉토리.

@echo off 
setlocal enabledelayedexpansion 
set num=100 
set c=0 
set f=1001 
set folder=%f:~-3% 
del undo.bat 2>nul 
for /f "delims=" %%a in ('dir /a:d /o:n /b') do (
set /a c=c+1 
    md !folder! 2>nul 
    move "%%a" !folder! 
    echo move "!folder!\%%a" "%cd%" ^& rd !folder! 2^>nul >>undo.bat 
    if !c! EQU %num% (
     set c=0 
     set /a f=f+1 
     set folder=!f:~-3! 
    ) 
) 
관련 문제