backup_automation
使用批处理自动备份,如下两个bat文件组成:
1,start.bat
set DATE=%date:/=-%
Copy_From_Server.bat > %DATE%.log
|
第一行,得到当前日期。由于Windows系统文件名不能出现/,所以替换成横线。
第二行,调用下面的bat,输出log。
2,Copy_From_Server.bat
set DATE=%date:/=-%
xcopy /e C:\backupfolder\%DATE%
|
第一行,同上。
第二行,使用xcopy从网络copy文件和文件夹到制定文件夹,每天建立以日期命名的文件夹。
===================================================================
补充1:有时需要一天执行多次,希望每次执行时日期命名的文件夹后缀1,2,3的方式递增。
做了如下改进:
@echo on SETLOCAL rem ============ set targetfolder=C:\temp set bakfolder=%date:/=-% set newfolder=%bakfolder%
for %%e in (8 7 6 5 4 3 2 1) do if not exist %bakfolder%_%%e set newfolder=%bakfolder%_%%e if not exist %bakfolder% set newfolder=%bakfolder%
mkdir %newfolder% echo Copying。。。。 xcopy /E/Y "%targetfolder%" "%newfolder%"
pause ENDLOCAL
|
===================================================================
补充2:访问服务器的共享文件夹如果需要密码,通过下面的命令映射为网络硬盘。
set devicename=N: set sharepath=\\servername\folder set user=name set password=pass
if exist %devicename% net use %devicename% /delete net use %devicename% %sharepath% /user:%user% %password%
|
===================================================================
补充3:
去除由date/t得到的日期中的斜线/,除了上面的方法,还可以使用for tokens来处理,例子如下:
for /f "tokens=1,2,3 delims=/" %%i in ('date/t') do @echo %%i%%j%%k
|
关于使用for进行分割处理再举两个例子,for命令行帮助里面的:
rem ===================== rem would enumerate the environment variable names in the current environment rem ===================== FOR /f "usebackq delims==" %%i IN (`set`) DO @echo %%i rem ===================== rem parse each line in myfile.txt: rem aaa,bbb,ccc,ddd,eee rem aaa2,bbb2,ccc2,ddd2,eee2 rem ;aaa3,bbb3,ccc3,ddd3,eee3 rem aaa4 bbb4 ccc4 ddd4 eee4 rem result: rem bbb ccc ddd,eee rem bbb2 ccc2 ddd2,eee2 rem bbb4 ccc4 ddd4 eee4 rem ===================== FOR /F "eol=; tokens=2,3* delims=, " %%i in (myfile.txt) do @echo %%i %%j %%k
|
阅读(828) | 评论(0) | 转发(0) |