2017-01-25 91 views
0

爲了將某些用戶文件夾備份到外部設備,我製作了此腳本(爲了便於閱讀,減去了所有ECHO)。它的工作完美無瑕,但我想知道如果有人有任何想法可以簡化它(例如,更聰明)。簡化批量備份腳本

我是新來這個網站和編碼。請多多包涵!

所有幫助表示讚賞。

@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 

此致敬禮。

+1

你應該最有可能移動到[CodeReview.SE] (儘管我不確定他們是否在談論批處理......)。只要您的代碼正常工作,它就沒有正確放置在SO上。 – geisterfurz007

+1

這篇文章適合[CodeReview](http://codereview.stackexchange.com)。 – aschipfl

回答

0

如果可能的話,不要重複自己

: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  

注:mkdir已supressed爲robocopy命令將創建目標文件夾

+0

非常感謝,像這樣的循環正是我所期待的! –