![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 14:01 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » ghost连续备份三个分区批处理制作的问题 |
| 可打印版本 1,886 / 10 |
| 第1楼 chjlcn | 发表于 2005-08-05 08:16 |
| 初级用户 发帖 7 积分 43 来自 广东 | |
|
ghost连续备份三个分区批处理制作的问题 cls
set todayFolder=%date:~0,4%%date:~5,2%%date:~8,2% md %todayFolder% cd %todayFolder% md c md d md e cd .. ghost -clone,mode=pdump,src=1:1,dst=g:\ghost\%todayFolder%\d\c.gho -fx -z2 -sure ghost -clone,mode=pdump,src=1:2,dst=g:\ghost\%todayFolder%\d\d.gho -fx -z2 -sure ghost -clone,mode=pdump,src=1:3,dst=g:\ghost\%todayFolder%\e\e.gho -rb -z2 -sure 在windows下将ghost改为ghost32可以执行, 但在Dos下执行时创建的目录c,d,e是在g:\ghost\ 而不是在g:\ghost\%todayFolder\ 。 最后c.gho,d.gho.e.gho是在g:\ghost\ 下,而不是我想要的g:\ghos\%todayFolder\c\, g:\ghost\%todayFolder%\d\,g:\ghost\%todayFolder%\e\ 我发现在ghost时路径提示是g:\ghost\\d\c.gho. %todayFolder%参数无效?怎样才行? |
|
| 第2楼 Climbing | 发表于 2005-08-05 09:05 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
试试这样:
cls set todayFolder=%date:~0,4%%date:~5,2%%date:~8,2% md g:\ghost\%todayFolder%\c md g:\ghost\%todayFolder%\d md g:\ghost\%todayFolder%\e ghost -clone,mode=pdump,src=1:1,dst=g:\ghost\%todayFolder%\c\c.gho -fx -z2 -sure ghost -clone,mode=pdump,src=1:2,dst=g:\ghost\%todayFolder%\d\d.gho -fx -z2 -sure ghost -clone,mode=pdump,src=1:3,dst=g:\ghost\%todayFolder%\e\e.gho -rb -z2 -sure |
|
| 第3楼 chjlcn | 发表于 2005-08-05 15:47 |
| 初级用户 发帖 7 积分 43 来自 广东 | |
|
多谢关注。
不过在dos下%todayFolder%参数还是空字符串。 创建的目录在g:\ghost\\c. 不行啊…………好烦。 |
|
| 第4楼 Climbing | 发表于 2005-08-05 16:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
在纯DOS环境下,根本就不支持这样的设置变量的方式:
set todayFolder=%date:~0,4%%date:~5,2%%date:~8,2% 这种设置方法只能在NT的cmd环境下使用。 |
|
| 第5楼 willsort | 发表于 2005-08-06 17:50 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re chjlcn:
纯DOS环境下,另有获取日期变量的方法,见于 {8905}批处理编程的异类 第7楼的代码。 另外,如果要用作不支持长文件名系统中(本站的MSDOS7.10是支持的)的文件或者目录名,需要注意观察日期变量中“年”的位数;如果它是4位数,将会被截取后日期变量的最后两个字符,它有可能是2005的05,也有可能是08-06的06,这取决于系统的日期格式。 |
|
| 第6楼 chjlcn | 发表于 2005-08-07 09:39 |
| 初级用户 发帖 7 积分 43 来自 广东 | |
|
:: GetVar.bat - Get from 'PROMPT' text to environment variable
:: Will Sort - 10:29 2005-7-16 - CMD@XP/COMMAND@Win98/MSDOS6.22 @echo off echo exit | %comspec% /k prompt set %1=%2$_:: > _GetVar.bat call _GetVar.bat for %%f in (_GetVar*.*) do del %%f 程序的思路是一个参数设置命令写入文件,调用,删除临时文件。 我查帮助还是不懂 %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。 $_回车 这一句整句详细解释一下好吗? echo exit | %comspec% /k prompt set %1=%2$_:: > _GetVar.bat |
|
| 第7楼 Climbing | 发表于 2005-08-07 10:48 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
嘿嘿,关键就是这一句!自己慢慢理解吧。这是批处理使用技巧中的精华。
|
|
| 第8楼 chjlcn | 发表于 2005-08-07 18:21 |
| 初级用户 发帖 7 积分 43 来自 广东 | |
|
@climbing
可以给点提示要学习哪几个命令吗? 有没有相关的电子书下载? |
|
| 第9楼 willsort | 发表于 2005-08-08 13:24 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re chjlcn:
真要详细说起来,可能会很复杂,因为我的表达能力有限,往往不能掌握读者已经知道了什么,还不知能什么。也许将来的DOS书中,我会专文解释这个代码的技巧。 目前只能简单地提供一些掌握它的思路: 1、注释掉删除_GetVar.bat的for语句,然后在命令行执行 getvar today=$D 查看_GetVar.bat的内容; 2、去除echo一句的重定向部分 > _GetVar.bat,然后在命令行执行 getvar today=$D 查看屏幕的输出内容; 3、在命令行分别单独执行: echo exit | %comspec% /k prompt set today=$D$_:: %comspec% /k prompt set today=$D$_:: prompt set today=$D$_:: 然后观察其各自的输出内容,相信你会有所体悟的。 [ Last edited by willsort on 2005-8-8 at 13:26 ] |
|
| 第10楼 chjlcn | 发表于 2005-08-09 18:03 |
| 初级用户 发帖 7 积分 43 来自 广东 | |
|
发现在dos下不支持%myDate:~0,2% 这样取字符,有什么函数可以取得一个字符中的一些字符?
|
|
| 第11楼 Climbing | 发表于 2005-08-09 21:35 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
willsort已经给出解决办法了,你没有仔细研究吗?
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |