Board logo

标题: 备份当天的文件夹到F盘与恢复 [打印本页]

作者: gool123456     时间: 2010-5-6 21:37    标题: 备份当天的文件夹到F盘与恢复

一键备份指定目录到F盘,一键恢复指定目录到原始路径。很适合做软件维护和经常重装的朋友用~!

可以单个目录复制,直接拖入要复制的目录回车后,批处理自动创建与复制。

也可以使用一个文本列表(dirlist.txt)来批量复制多个目录 --

只要把自己定义的dirlist.txt与批处理放在一起,运行批处理自动复制dirlist.txt记录的目录。

dirlist.txt文本的内容是你要复制的目录列表,每行记录一个目录的绝对路径,如:

c:\123
c:\Intel
C:\Program Files\Thunder Network
C:\Program Files\专业工具\硬件检测
C:\Documents and Settings\All Users\Application Data\Thunder Network
d:\360liulan
d:\Downloads

自己定义即可。

没有定义文件dirlist.txt时,默认的功能是一次复制一个目录。


备份目录到F盘.bat 内容:


@echo off&setlocal EnableDelayedExpansion
::Code by gool123456 @ 2010 On BBS.cn-DOS.net
echo ==========今天是:%date%=============
echo.
if exist dirlist.txt (goto :TXT) else (
set /p folder_=拖入要备份的文件夹并回车:
call :task
set folder=!folder_:"=!
set "mm=!folder:\=,!"
set "mm=!mm: =:!"
for %%e in (!mm!) do set "mm_=%%e"
set "mm_=!mm_::= !"
md "f:\!date_!\!mm_!" 2>nul
Xcopy !folder_! "f:\!date_!\!mm_!" /e /y
)
pause
>>f:\!date_!\dirlist.txt echo !folder!
goto :eof
:TXT
for /f "delims=" %%a in (dirlist.txt) do (
call :task
set "folder=%%a"
set "mm=!folder:\=,!"
set mm=!mm: =:!
for %%e in (!mm!) do set "mm_=%%e"
set "mm_=!mm_::= !
md "f:\!date_!\!mm_!"
Xcopy "%%a" "f:\!date_!\!mm_!" /e /y
)
pause
copy /y dirlist.txt "f:\!date_!" >nul
goto :eof
:task
for /f "delims= " %%i in ('echo %date%') do set "date_=%%i"
set "date_=%date_:-=%"
if not exist "f:\%date_%" md "f:\%date_%"
goto :eof



恢复.bat 内容:



@echo off & setlocal EnableDelayedExpansion
::Code by gool123456 @ 2010 On BBS.cn-DOS.net
::恢复今天备份的文件夹
for /f "delims= " %%i in ('echo %date%') do set "date_=%%i"
set "date_=%date_:-=%"
if exist "f:\%date_%" (
cd /d "f:\%date_%"
if exist dirlist.txt (
for /f "delims=" %%c in (dirlist.txt) do (
set "folder=%%c"
set "mm=!folder:\=,!"
set mm=!mm: =:!
for %%e in (!mm!) do set "mm_=%%e"
set "mm_=!mm_::= !
if exist "!mm_!" (
if not exist "%%c" MD "%%c"
Xcopy "!mm_!" "%%c" /y /e
                 )
               )
            ) else (echo 缺失列表文件:dirlist.txt&pause>nul&goto :eof)
echo.&echo 成功恢复&pause>nul  
          ) else (echo 没有今天可恢复的文件夹&pause>nul)      
goto :eof


[ Last edited by gool123456 on 2010-5-6 at 22:03 ]