Skrypt porównujący dwa foldery


(Pawel Pieczyrak) #1

Witam. Poszukuję kogoś, aby pomógł mi w napisaniu skryptu, który będzie działał na takiej zasadzie:

Mamy katalog A i katalog B. W katalogu A znajdują się takie foldery:

mama

tata

brat

Zaś w katalogu B takie foldery:

mama

brat

I teraz skrypt ma porównać zawartość tych dwóch katalogów i jeżeli wykryje, że w katalogu B nie ma folderu tata, zaś w katalogu A jest, to skrypt ma folder tata z katalogu A usunąć..

Skrypt ma działać pod systemem Windows Server 2003

Z góry dziękuje za pomoc.


(Tomek Matz) #2

Zobacz, czy zadziała Ci poniższy kod. Oczywiście zapisz go w pliku o rozszerzeniu bat. Sam plik odpalaj najlepiej z wiersza poleceń.

@ECHO OFF


SET /P "aFolder=Pelna sciezka folderu A: "

SET /P "bFolder=Pelna sciezka folderu B: "


IF NOT EXIST %aFolder% (GOTO :DisplayError "Folder A nie istnieje.")

IF NOT EXIST %bFolder% (GOTO :DisplayError "Folder B nie istnieje.")


CALL :DisplaySubFolders %aFolder%

CALL :DisplaySubFolders %bFolder%


CALL :DeleteSubFolders %aFolder%,%bFolder%

CALL :DeleteSubFolders %bFolder%,%aFolder%


GOTO :End


REM Procedures


:DisplaySubFolders

ECHO Foldery znajdujace sie w "%~1"

FOR /F "tokens=*" %%i IN ('DIR "%~1" /A:D /B') DO ECHO %%i

GOTO :End


:DeleteSubFolders

FOR /F "tokens=*" %%i IN ('DIR "%~1" /A:D /B') DO CALL :DeleteSubFoldersHelper "%~1","%~2","%%i"

GOTO :End


:DeleteSubFoldersHelper

FOR /F "tokens=*" %%j IN ('DIR "%~2" /A:D /B') DO IF "%~3"=="%%j" (GOTO :End)

RD /S /Q "%~1\%~3"

ECHO Folder "%~3" zostal usuniety z folderu "%~1".

GOTO :End


:DisplayError

ECHO %*

GOTO :End


:End