中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-13 04:04
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS学习入门 & 精彩文章 (教学室) » 怎样利用循环和设置变量改写这段批处理?
可打印版本  1,502 / 7
第1楼 walu 发表于 2004-01-11 00:00
高级用户 发帖 201 积分 916
怎样利用循环和设置变量改写这段批处理?
象这段批处理:
@echo off
dready e: /w
if ERRORLEVEL 255 call setup.bat d:
dready f: /w
if ERRORLEVEL 255 call setup.bat e:
dready g: /w
if ERRORLEVEL 255 call setup.bat f:
......
dready z: /w
if ERRORLEVEL 255 call setup.bat z:

怎样利用循环和设置变量改写使得更简单明了?
第2楼 willsort 发表于 2004-01-11 00:00
元老会员 发帖 1,512 积分 4,432
Re walu:

主要是循环体子程序的书写,如果有必要,可以将主程序与子程序包含在同一文件。


第一方案:

::MAIN.BAT
for %%d in (d e f g h i j k l m n o p q r s t u v w x y z) do call sub.bat %%d

::SUB.BAT
if == goto end
dready %1: /w
if errorlevel 255 call setup.bat %predrive%:
:end
set predrive=%1

第二方案:

::LOOP.BAT
if == goto sub
for %%d in (d e f g h i j k l m n o p q r s t u v w x y z) do call %0 $sub %%d
goto end

:sub
if == goto end
dready %1: /w
if errorlevel 255 call setup.bat %predrive%:
:end
set predrive=%1







第3楼 walu 发表于 2004-01-22 00:00
高级用户 发帖 201 积分 916
第一方案可行,但我不想把一个批处理变成两个批处理,第二方案却显示错误命令或文件名,为什么这样?还有哪位大侠知道?请指点!
第4楼 willsort 发表于 2004-01-23 00:00
元老会员 发帖 1,512 积分 4,432
Re walu:

for %%d in (d e f g h i j k l m n o p q r s t u v w x y z) do call %0.bat $sub %%d
中 %0.bat 改为 %0


第5楼 walu 发表于 2004-01-24 00:00
高级用户 发帖 201 积分 916
以下是引用willsort在2004-1-23 20:16:35的发言:
Re walu:

    for %%d in (d e f g h i j k l m n o p q r s t u v w x y z) do call %0.bat $sub %%d
中 %0.bat 改为 %


Re willsort
这样改还是不行呀,请再指教指教。谢谢!
第6楼 willsort 发表于 2004-01-26 00:00
元老会员 发帖 1,512 积分 4,432
Re walu:

抱歉,学习批处理多年,仍然犯这种低级错误。主要是眼高手低的缘故,总以为一个很简单的程序根本不需测试。实际上,我的第一方案经过测试,所以无错;而第二方案是在第一方案的基础上简单修改而来的,所以在许多细节上出现谬误。下面给出最新修改后的代码,欢迎你继续提出程序改进的建议和意见。


::LOOP.BAT
@echo off
if == goto sub
for %%d in (d e f g h i j k l m n o p q r s t u v w x y z) do call %0 $sub %%d
goto end

:sub
if == goto end
dready %2: /w
if errorlevel 255 call setup.bat %predrive%:

:end
set predrive=%2
第7楼 walu 发表于 2004-01-27 00:00
高级用户 发帖 201 积分 916

请教willsort,如果把这段批处理:
@echo off
dready e: /w
if ERRORLEVEL 255 call setup.bat d:
dready f: /w
if ERRORLEVEL 255 call setup.bat e:
dready g: /w
if ERRORLEVEL 255 call setup.bat f:
......
dready z: /w
if ERRORLEVEL 255 call setup.bat z:

改为

@echo off
dready e: /w
if ERRORLEVEL 255 call setup.bat 3
dready f: /w
if ERRORLEVEL 255 call setup.bat 4
dready g: /w
if ERRORLEVEL 255 call setup.bat 5
......
dready w: /w
if ERRORLEVEL 255 call setup.bat 21:


又该怎样处理呢?
第8楼 willsort 发表于 2004-01-27 00:00
元老会员 发帖 1,512 积分 4,432
Re walu:

给你一个思路,你可以自己也锻炼一下,遇到什么问题在探讨吧。

http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=12&ID=9090
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023