批处理备份后发布文件夹
2012-09-07 11:29 lierlier 阅读(276) 评论(1) 收藏 举报先将"C:\网站"下对应"D:\工程1"下面的所有文件夹和文件备份到"D:\备份2012-9-1-52647",然后再把"D:\工程1"发布到"C:\网站"。
用法:
backupAndPublish.bat "D:\工程1"
1 @echo off 2 3 set SourceDir=%1 4 set now=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2% 5 6 ::参数 7 set DestDir="C:\网站" 8 set BackDir="D:\备份%now%" 9 echo. 10 echo 正在备份 11 call:Backup %SourceDir% %DestDir% %BackDir% 12 echo. 13 echo 正在发布 14 call:Publish %SourceDir% %DestDir% 15 16 goto :eof 17 18 :: 主程序 19 :Backup 20 setlocal enabledelayedexpansion 21 22 set SourceDir=%~1 23 set DestDir=%~2 24 set BackDir=%~3 25 26 :: 计算源路径长度 27 set SourceDirLen=0 28 set SourceDirStr=%SourceDir% 29 30 :next1 31 if not "%SourceDirStr%"=="" ( 32 set /a SourceDirLen+=1 33 set "SourceDirStr=%SourceDirStr:~1%" 34 goto :next1 35 ) 36 37 :: 备份 38 for /r "%SourceDir%" %%i in (*.*) do ( 39 set BackPath=%%~dpi 40 set BackPath=%BackDir%!BackPath:~%SourceDirLen%! 41 set DestPath=%%i 42 set DestPath=%DestDir%!DestPath:~%SourceDirLen%! 43 set BackFilePath=%%i 44 set BackFilePath=%BackDir%!BackFilePath:~%SourceDirLen%! 45 46 echo !DestPath! 47 xcopy "!DestPath!" "!BackPath!" /r /y >nul 2>nul 48 if not exist "!BackFilePath!" (echo 备份复制失败) 49 ) 50 51 for /r "%SourceDir%" %%i in (\) do ( 52 set SourcePath=%%i 53 set SourcePath=!SourcePath:~0,-1! 54 set BackPath=%BackDir%!SourcePath:~%SourceDirLen%! 55 56 md "!BackPath!" >nul 2>nul 57 ) 58 59 setlocal disabledelayedexpansion 60 goto :eof 61 62 :: 发布 63 :Publish 64 set SourceDir=%1 65 set DestDir=%2 66 67 xcopy %SourceDir% %DestDir% /r /y /i /e 68 69 goto :eof
浙公网安备 33010602011771号