windows - Forenkling af batch backup script

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har lavet dette script (minus hele min ECHO til din læsbarhed) for at sikkerhedskopiere bestemte brugermapper til en ekstern enhed. Det fungerer uden problemer, men jeg undrer mig over, om nogen har ideer til, hvordan jeg kan forenkle det (f.eks. . mere 'klogt').


Jeg er ny til denne side og kodning. Vær venlig at bære med mig!


Al hjælp værdsat.


@ECHO OFF

SET driveLetter=\%~d0

:CHOOSE

SET /P CHOOSE=Are you sure you want to continue [Y/N]? 

IF /I "\%CHOOSE\%" == "Y" GOTO :chooseYes
IF /I "\%CHOOSE\%" == "N" GOTO :chooseNo

GOTO :CHOOSE

:chooseYes

MKDIR \%driveLetter\%Desktop
MKDIR \%driveLetter\%Documents
MKDIR \%driveLetter\%Favorites
MKDIR \%driveLetter\%Pictures
MKDIR \%driveLetter\%Downloads

TIMEOUT /T 1 /NOBREAK >NUL

ROBOCOPY \%USERPROFILE\%Desktop \%driveLetter\%Desktop /E /COPYALL /ZB /MT:20 /XJ /R:2 /W:5
ROBOCOPY \%USERPROFILE\%Documents \%driveLetter\%Documents /E /COPYALL /ZB /MT:20 /XJ /R:2 /W:5
ROBOCOPY \%USERPROFILE\%Favorites \%driveLetter\%Favorites /E /COPYALL /ZB /MT:20 /XJ /R:2 /W:5
ROBOCOPY \%USERPROFILE\%Pictures \%driveLetter\%Pictures /E /COPYALL /ZB /MT:20 /XJ /R:2 /W:5
ROBOCOPY \%USERPROFILE\%Downloads \%driveLetter\%Downloads /E /COPYALL /ZB /MT:20 /XJ /R:2 /W:5

CLEANMGR /C: /SAGERUN:65535 /SETUP

TIMEOUT /T 1 /NOBREAK >NUL

DEFRAG /C /H /V /W

PAUSE

EXIT    

:chooseNo 

TIMEOUT /T 3 /NOBREAK >NUL


Med venlig hilsen.

Bedste reference


Hvis det er muligt, gentag dig ikke


:chooseYes

    for \%\%a in ( Desktop Documents Favorites Pictured Downloads ) do (
        robocopy "\%userprofile\%\%\%a" "\%driveLetter\%\%\%a" /E /COPYALL /ZB /MT:20 /XJ /R:2 /W:5
    )

    CLEANMGR /C: /SAGERUN:65535 /SETUP
    TIMEOUT /T 1 /NOBREAK >NUL
    DEFRAG /C /H /V /W
    PAUSE
    EXIT    


Bemærk: mkdir er blevet undertrykt, da kommandoen robocopy vil oprette målmappen