![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-26 01:20 |
共 47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » 征求怎样简化DOS批处理的交互式问答?? |
| 可打印版本 2,048 / 8 |
| 第1楼 GOTOmsdos | 发表于 2004-01-19 00:00 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
征求怎样简化DOS批处理的交互式问答?? 假设你原先在D E F 。。。。Z中作了GHOST备份,后来忘记在哪些盘了,但只想找到第一个备份更新备份一次就结束了。
假如更新备份的命令是这样: @echo off Ghost.exe -CLONE,MODE=PDUMP,SRC=1:1,DST=WIN.gho -Z9 -sure -fx bfyz.bat 如果找到多少就处理多少,如下就行了: 适合2000 XP 2003: @echo off for %%1 in (d e f ....z) do Ghost.exe -CLONE,MODE=PDUMP,SRC=1:1,DST=%%1:\WIN.gho -Z9 -sure -fx && bfyz.bat 适合98: (很遗憾,现在只能分开ghost...... 和bfyz.bat这两个任务。在98中我未找到把这两个任务放在一起的方法,如有人能解决就赶快发贴吧!! @echo off for %%1 in (d e f ....z) do Ghost.exe -CLONE,MODE=PDUMP,SRC=1:1,DST=%%1:\WIN.gho -Z9 -sure -fx for %%1 in (d e f ....z) do if exist %%1:\win.gho bfyz.bat 如果是找到第一个处理完就结束的话,如下: @echo off for %%1 in (z y x ....... d) do if exist %%1:\win.gho set vol=%%1 Ghost.exe -CLONE,MODE=PDUMP,SRC=1:1,DST=%vol%:\WIN.gho -Z9 -sure -fx bfyz.bat ====================================== &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & 有兴趣的话,可以耍一耍手动输入实参的DIY乐趣吧! & & & &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 可以编个简单批处理实验一下,先在你最后两个盘 的根目录里编一个内容分别为“dddddddddddddddddddddd”和“eeeeeeeeeeeeeeeeeeeeee”的文件,都名为"target.txt". ====================== 编个名为“oneput.bat”的批处理如下: (一次性手动输入) @echo off :loop shift if %1#==# goto end if not exist %1:\target.txt goto loop dir %1:\target.txt type %1:\target.txt :end 操作时,键入 oneput d d e f g h i j k l m n o p q r s t u v w x y z回车。(要多输入一个任意字符,因为shift会作废第一个,就相当于在它前面有过一次%1) ========================= 再编个名为“everyput.bat”的批处理: (看起来有点可怕!如有人能找到简洁的办法,就发贴吧!期待!。。。正为此严重郁闷中!) (互动式手动输入) 其实这是假想的,因为一般没有这么多盘,所以只要依你的盘数编就行了。 @echo off :loop if exist %vol%:\target.txt goto end choice /c:defghijklmnopqrstuvwxyz /t:d,99 enter a drive letter set vol=z if errorlevel 23 goto loop set vol=y if errorlevel 22 goto loop set vol=x if errorlevel 21 goto loop set vol=w if errorlevel 20 goto loop set vol=v if errorlevel 19 goto loop set vol=u if errorlevel 18 goto loop set vol=t if errorlevel 17 goto loop set vol=s if errorlevel 16 goto loop set vol=r if errorlevel 15 goto loop set vol=q if errorlevel 14 goto loop set vol=p if errorlevel 13 goto loop set vol=o if errorlevel 12 goto loop set vol=n if errorlevel 11 goto loop set vol=m if errorlevel 10 goto loop set vol=l if errorlevel 9 goto loop set vol=k if errorlevel 8 goto loop set vol=j if errorlevel 7 goto loop set vol=i if errorlevel 6 goto loop set vol=h if errorlevel 5 goto loop set vol=g if errorlevel 4 goto loop set vol=f if errorlevel 3 goto loop set vol=e if errorlevel 2 goto loop set vol=d if errorlevel 1 goto loop :end dir %vol%:\target.txt type %vol%:\target.txt echo It''''s done! 操作时,键入: everyput d回车(每次输入一个:d......................z,直到出现“It''''s done! ”) |
|
| 第2楼 Vicky26 | 发表于 2004-01-21 00:00 |
| 初级用户 发帖 7 积分 133 | |
|
太难了吧
|
|
| 第3楼 willsort | 发表于 2004-01-26 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re gotomsdos:
一个很不错的主题,只是感觉上像是从论坛上几个人的问答中整理出来,解释性说明太少,所以欠缺条理性。 那个一次性输入的程序,输入时其实可以不必那么麻烦。以下的程序只需要要键入程序名即可。 交互性输入的必要性其实不是很大,不过由它引出的依序赋值倒是值得探讨。
|
|
| 第4楼 willsort | 发表于 2004-01-26 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re gotomsdos:
刚才分析了一下,得出依序赋值的方案,你看一看吧,提提意见。 @echo off |
|
| 第5楼 Kinglion | 发表于 2004-01-29 00:00 |
| 铂金会员 发帖 1,924 积分 5,798 来自 金獅電腦軟體工作室 | |
|
值得借鉴,好!
|
|
| 第6楼 GOTOmsdos | 发表于 2004-02-02 00:00 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
此帖确是我一人提出的, 条理是这样的:
先是无需输入实参的,分为 适合2000 XP 2003的和98的 后是玩耍手动输入实参的, 分为一次性全部输入和一次一个地输入 (基本是都适用,除了CHOICE XP不能用外) WILLSORT, 你好! 试了你 的方法好象不行, 你说手动输入实参没必要,但我这样做显然就是要学习测试DOS形参实参的运作过程和我们的掌握能力,以及人机交互的乐趣! 能不能解释一下 tag1=%%tag1%%*等等? 谢谢! |
|
| 第7楼 willsort | 发表于 2004-02-02 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re gotomsdos:
哪个方法不行?我说手动输入没必要,是指在你的例子程序中实用性不大。 tag1=%%tag1%%* 被echo到文件中的结果就是 tag1=%tag1%*,现在明白了吗? |
|
| 第8楼 GOTOmsdos | 发表于 2004-02-02 00:00 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
就是这个 tag1=%tag1%* (这个*号什么意思?),能不能解释一下?
|
|
| 第9楼 willsort | 发表于 2004-02-03 00:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re gotomsdos:
set tag1=%tag1%* 即给变量tag1添加一个星号,星号无特别含义,只用于计数。可参见下帖: http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=6&ID=9250 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |