Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315193
  • 博文数量: 118
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 1163
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-27 12:09
文章分类

全部博文(118)

文章存档

2023年(20)

2022年(3)

2021年(1)

2020年(1)

2019年(7)

2013年(2)

2011年(1)

2010年(37)

2009年(46)

我的朋友

分类: WINDOWS

2009-10-09 15:30:24

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) |
给主人留下些什么吧!~~