|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『楼 主』:
该怎样改这段批处理?
如下:
dready C: /w
if ERRORLEVEL 2 goto az
dready D: /w
if ERRORLEVEL 2 goto az
dready E: /w
if ERRORLEVEL 2 goto az
...
dready z: /w
if ERRORLEVEL 2 goto az
(我的意思是如果返回码是2,则执行“az”,不再dready下面的分区。)
我改成:
for %%1 in (d e f g h i j k l m n o p q r s t u v w) do dready %%1: /w
if ERRORLEVEL 2 goto az
竟然不行,该如何改呢?
|
|
2004-2-13 00:00 |
|
|
Kinglion
铂金会员
       痴迷DOS者
积分 5798
发帖 1924
注册 2003-6-20 来自 金獅電腦軟體工作室
状态 离线
|
『第
2 楼』:
您的批处理文件里的 dready 是外部命令吧? 你可以试一试 SHIFT 命令。
:TOP
dready %1: /w
if ERRORLEVEL 2 goto az
SHIFT
GO TOP
:az
REM 此批处理启动参数为: d e f g h i j k l m n o p q r s t u v w x y z
没有具体操作,有什么不妥之处请大家指正。
|

熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
|
|
2004-2-14 00:00 |
|
|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
|
2004-2-14 00:00 |
|
|
Kinglion
铂金会员
       痴迷DOS者
积分 5798
发帖 1924
注册 2003-6-20 来自 金獅電腦軟體工作室
状态 离线
|
『第
4 楼』:
您的批处理文件里的 dready 是外部命令吧? 你可以试一试 SHIFT 命令。
修改版 没有实验,不知能否可用,权作交流吧)
:TOP
CALL %0 c d e f g h i j k l m n o p q r s t u v w x y z
dready %1: /w
if ERRORLEVEL 2 goto az
SHIFT
GO TOP
:az
REM 此批处理启动参数为: c d e f g h i j k l m n o p q r s t u v w x y z
没有具体操作,有什么不妥之处请大家指正。
|

熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
|
|
2004-2-14 00:00 |
|
|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『第
5 楼』:
Kinglion,按你的方法不能用呀,该怎样做?
|
|
2004-2-14 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
6 楼』:
Re walu:
以下代码根据Kinglion的代码修改,你可以试用一下。另外,你提了许多同类问题,是有什么具体需要吗?学会举一反三应该是最重要的。
Quote: | @echo off
if not [%1]==[] goto top
call %0 c d e f g h i j k l m n o p q r s t u v w x y z
goto end
:top
dready %1: /w
if ERRORLEVEL 2 goto az
shift
goto top
:az
rem 插入自己的处理代码
:end |
|
[此贴子已经被作者于2004-2-16 7:31:18编辑过]
|

※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-2-16 00:00 |
|
|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『第
7 楼』:
RE willsort:
我在做一些启动盘,所以提了不少批处理问题,每次都得到你热心的帮助,在此一并感谢!我也想能举一反三的学,但因没有一点基础且也没有系统的学,只有一些片断。对一些批处理连意思都理解不了,书店又找到到有关批处理和DOS方面的书籍。请问你有批处理电子书吗?我在网上找过一个《批处理基础与技巧》可惜没找着。其实你就是个批处理的顶级高手,何尝不写本书或写篇详细的学习文章,好让我们学习学习?
象:if [%1]==[$sub] goto sub
if [%predrive%]==[] goto end
这两句什么意思呢?
|
|
2004-2-16 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
8 楼』:
Re walu:
关于电子书,曾有一些零零散散的版本,自己写曾一些专题,但因只供私人研究,故未做整理,后来在一次又一次的硬盘报废事故中损失殆尽,故此只能对你的要求表示遗憾。
而批处理的高级研究著作的确很少,他们大多散见于早期的电脑杂志和外文版的DOS教材中,我的经验便是如此积累起来的。
自己出书的想法对我来说过于空幻,如果本站DOS书编者愿意在批处理上多下一些篇幅,我倒可以尽我所能的提供支持。
|

※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-2-16 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
9 楼』:
Re walu:
if [%1]==[$sub] goto sub
---------------
单从字面看,是说调用本程序的第一个命令行参数如果是$sub,则直接转向SUB标签处。
就其一般性而言,这是批处理程序含带各项参数地调用自身时所常用的一种技巧,以此可以跳跃一些不含参数执行时所需要的数据初始化模块。$sub并非是一个特有的关键字,而只是我在调用子程序时的习惯表示法,当然也可以是其他程序执行时用户一般不会使用到的参数字符串。
if [%predrive%]==[] goto end
---------------
单从字面看,是说如果环境变量 predrive 为空时直接转向end标签。
就其所用到的特定场合(就是我写的那个批处理)而言,是指在程序中的sub子程序首次调用时(即带参数 $sub d 调用), predrive 尚没有值,而需要转向 end 处给他赋值(即 d)后,供第二轮调用时(即带参数 $sub e 调用)使用。
[此贴子已经被作者于2004-2-16 16:26:00编辑过]
|

※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-2-16 00:00 |
|