中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创][XP]文件备份器V2.4(Final) [07-4-8更新]
« [1] [2] [3] [4] [5] [6] [7] [8] »
作者:
标题: [原创][XP]文件备份器V2.4(Final) [07-4-8更新] 上一主题 | 下一主题
hj_18
中级用户




积分 255
发帖 57
注册 2003-6-26
状态 离线
『第 76 楼』:  很好的程序

我现在单位里的电脑是联想的,带有慧盾保护,C盘上无法保存数据,因此像Mozilla Firefox和Thunderbird的安装,配置文件都不能保存,还有许多程序都是要在C:\Documents and Settings下放东西,又不能移动文件夹的位置,确实很麻烦。我最近是这么来保存和备份的,有一次在还原卡解开的时候,我编辑“我的电脑”属性中的“Path"变量,把winrar的路径放进去,然后写个保存设置的文件:
mkbksd.bat
@rar a -u -as -ep3 -r e:\hj\backup\bk\bkfxsd.rar "C:\Documents and Settings\Administrator\Application Data\Mozilla"
@rar a -u -as -ep3 -r e:\hj\backup\bk\bkbirdsd.rar "C:\Documents and Settings\Administrator\Application Data\Thunderbird"

恢复设置
restore.bat
e:
@cd "e:\hj\backup\bk"
REM 尝试用关机备份文件恢复
@rar x -ep3 -o+ bkfxsd.rar
@rar x -ep3 -o+ bkbirdsd.rar

我想如果不能修改Path的内容,也可以在脚本中把rar打上绝对路径,简单用用还是可以的,当然不能和楼主的大作相提并论,只是我想说原来我也有写个这样的脚本的计划,现在就省力开心多了。

2006-9-15 20:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 77 楼』:  

这要花费多大的精力啊。

2006-9-15 22:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 78 楼』:  程序有待改善。

这个程序不完善呀,我刚才测试了一下,添加了一个备份作业,然后又删除了这项备份,可程序生成的备份文件并没有删除,并且自启动项里的启动项目也没有删除。:o

2006-9-15 22:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 79 楼』:  



  Quote:
Originally posted by htysm at 2006-9-15 22:46:
这个程序不完善呀,我刚才测试了一下,添加了一个备份作业,然后又删除了这项备份,可程序生成的备份文件并没有删除,并且自启动项里的启动项目也没有删除。:o

  请问你是用这个程序自带的删除功能来删除的吗?如果用自带的来删除,应该删得了启动项目里的启动项的呀,我都测试了好久的。如果确实不能删除,请把你的操作详细地叙述一遍,看是哪个地方出了问题。

  你说程序生成的备份文件没有删除,是指放在%programfiles%下的bat文件没有删除,还是指备份成功后copy过去的文件没有被删除?如果是后一种的话,那正是备份任务所需要的呀:就算程序删除了,但是文件还是保留下来了。如果是前者,还有请你把操作详细地描述一下。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-15 23:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hj_18
中级用户




积分 255
发帖 57
注册 2003-6-26
状态 离线
『第 80 楼』:  

我建议试试unxutils,等会儿再聊。

2006-9-16 01:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hj_18
中级用户




积分 255
发帖 57
注册 2003-6-26
状态 离线
『第 81 楼』:  

其实DOS下的批处理命令是很简陋的,很多时候要做出我们心目中想要的效果比较难,这时候不妨使用一些移植到windows下的Unix工具,很可能事半功倍。

http://unxutils.sourceforge.net/
比如把路径名与文件名分开可以用dirname等等,在我写脚本时发现很有用,以下是我的一个在右键菜单中加入 tar & gzip 压缩的脚本,一个草稿。水平很低,拿出来给大家笑笑。
set tmpdir=e:\temp\
set progdir="D:\Program Files\UnxUtils\usr\local\wbin\"
%progdir%echo -n -E %1 >%tmpdir%1.txt
%progdir%dirname %1 >%tmpdir%2.txt
%progdir%gawk "{print length($0)+2}" %tmpdir%2.txt > %tmpdir%3.txt
for /F %%i in (%tmpdir%3.txt) do %progdir%gawk "{print substr($0,\"%%i\")}" %tmpdir%1.txt > %tmpdir%4.txt
for /F "delims=?" %%j in (%tmpdir%4.txt) do set bsname=%%j
%progdir%gawk "BEGIN{FS=\".\"}$0 ~/\..?.?.?$/{NF=NF-1;print $0}" %tmpdir%4.txt >%tmpdir%5.txt
%progdir%test -s %tmpdir%5.txt
if %ERRORLEVEL%==1 goto noext
for /F "delims=?" %%i in (%tmpdir%5.txt) do %progdir%tar cvf "%%i.tar" "%bsname%" && %progdir%gzip "%%i.tar"
goto end
:noext
for /F "delims=?" %%i in (%tmpdir%4.txt) do %progdir%tar cvf "%%i.tar" "%bsname%" && %progdir%gzip "%%i.tar"
rem del /Q /S %tmpdir%1.txt
rem del /Q /S %tmpdir%2.txt
:end

修改注册表
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\tar压缩]
@="用tar压缩"

[HKEY_CLASSES_ROOT\*\shell\tar压缩\command]
@="D:\\Program Files\\UnxUtils\\bin\\mktgz.bat \"%L\""

[HKEY_CLASSES_ROOT\Folder\shell\tar]
@="用tar压缩"

[HKEY_CLASSES_ROOT\Folder\shell\tar\command]
@="D:\\Program Files\\UnxUtils\\bin\\mktgz.bat \"%L\""

2006-9-16 03:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 82 楼』:  



  Quote:
Originally posted by hj_18 at 2006-9-16 03:08:
比如把路径名与文件名分开可以用dirname等等

  其实,如果只是把路径名与文件名分离开的话,不用第三方软件,CMD中的for语句就可以办到,%%~pi 表示路径名,%%~ni 表示文件名,%%~nxi 表示带扩展名的文件名……呵呵,经过微软的不断改造,CMD已经非常强大了,只是限于我们的认识,还难以发挥它的全部功能而已。看似难以完成的工作,随着你认识的不断深入,就会发现你离成功越来越近,只到最后通过CMD来解决难题,不断有新的发现,不断有新的惊喜,这就是CMD命令行的魅力所在,这也是我们还在对CMD命令行孜孜不倦地探索的动力。呵呵,一点小感慨,扯得有点远了。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-19 06:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hj_18
中级用户




积分 255
发帖 57
注册 2003-6-26
状态 离线
『第 83 楼』:  

我只是觉得dos不能把一个命令的输出结果直接赋值给一个变量,还要用个临时文件for一下,有点烦。而且像IF语句什么的不能跟复合语句体,几个语句要在一行上写完,格式上不好看。用FOR从文件中读取东西,怎么都不如gawk什么的方便。我还是试试perl什么的算了。

2006-9-19 21:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 84 楼』:  

  DOS可以把一个命令的输出结果直接赋给一个变量啊,只是一个变量每次只能接收一行的内容而已,完全可以不用临时文件的;如果用到了临时文件,要么就是你的功力还不够,要么就是临时文件有其他用途,要么……要么就是所有的命令行工具都无法绕过去的某种限制。

  if语句还是可以跟复合语句体的啊,你在if set command的set语句和command语句中都可以用一对括号把复合语句体包括进去,可能你用得比较少吧。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-20 00:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
caicai
新手上路





积分 14
发帖 7
注册 2006-9-20
状态 离线
『第 85 楼』:  

第一次见到那么强大的批处理脚本,支持一下!

2006-9-20 08:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hj_18
中级用户




积分 255
发帖 57
注册 2003-6-26
状态 离线
『第 86 楼』:  



  Quote:
Originally posted by namejm at 2006-9-20 12:58 AM:
  DOS可以把一个命令的输出结果直接赋给一个变量啊,只是一个变量每次只能接收一行的内容而已,完全可以不用临时文件的;如果用到了临时文� ...

那能不能教教我,举个实例好吗?我实在是搞不明白,谢谢。
啊,看了楼顶的帖子,明白了第二个问题。

今天会了第一个问题。
http://www.cn-dos.net/forum/view ... ge=1&highlight=

[ Last edited by hj_18 on 2006-9-27 at 20:08 ]

2006-9-20 21:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
TQang
新手上路





积分 2
发帖 1
注册 2006-9-14
状态 离线
『第 87 楼』:  

xcopy_parameter参数没用上,是不是有点BUG

2006-9-20 23:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 88 楼』:  

友情提醒,这里有个小错误:

echo ecoh 不存在,可能已被改名、移动或者删除

这里的ECOH应该是ECHO吧,呵呵

不完善,没法恢复备份文件!

[ Last edited by uemuem on 2006-10-13 at 23:14 ]



个人主页-找餐厅:http://www.canting.cc
2006-10-13 23:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 89 楼』:  

  ecoh确实是echo的笔误,多谢你的提醒,已经修改。

  请问你是在什么情况下恢复不了备份文件的?



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-14 00:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 90 楼』:  



  Quote:
Originally posted by namejm at 2006-10-14 00:27:
  ecoh确实是echo的笔误,多谢你的提醒,已经修改。

  请问你是在什么情况下恢复不了备份文件的?

前面那个是提示出错,所以我看出来了

在源文件不存在,备份文件存在的情况下,不能把备份文件恢复到源文件的位置,也没有提示出错。。。
具体哪里出问题我也不太清楚,代码我也看不太懂,说实话!:lol:



个人主页-找餐厅:http://www.canting.cc
2006-10-14 01:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] [6] [7] [8] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: