|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『楼 主』:
怎样利用循环和设置变量改写这段批处理?
象这段批处理:
@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:
怎样利用循环和设置变量改写使得更简单明了?
|
|
2004-1-11 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
2 楼』:
Re walu:
主要是循环体子程序的书写,如果有必要,可以将主程序与子程序包含在同一文件。
Quote: | 第一方案:
::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 [%predrive%]==[] goto end
dready %1: /w
if errorlevel 255 call setup.bat %predrive%:
:end
set predrive=%1
第二方案:
::LOOP.BAT
if [%1]==[$sub] 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 [%predrive%]==[] goto end
dready %1: /w
if errorlevel 255 call setup.bat %predrive%:
:end
set predrive=%1 |
|
[此贴子已经被作者于2004-1-25 12:30:47编辑过]
|

※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-1-11 00:00 |
|
|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『第
3 楼』:
第一方案可行,但我不想把一个批处理变成两个批处理,第二方案却显示错误命令或文件名,为什么这样?还有哪位大侠知道?请指点!
|
|
2004-1-22 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
4 楼』:
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
[此贴子已经被作者于2004-1-25 12:28:46编辑过]
|

※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-1-23 00:00 |
|
|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『第
5 楼』:
Quote: | 以下是引用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
这样改还是不行呀,请再指教指教。谢谢!
|
|
2004-1-24 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
6 楼』:
Re walu:
抱歉,学习批处理多年,仍然犯这种低级错误。主要是眼高手低的缘故,总以为一个很简单的程序根本不需测试。实际上,我的第一方案经过测试,所以无错;而第二方案是在第一方案的基础上简单修改而来的,所以在许多细节上出现谬误。下面给出最新修改后的代码,欢迎你继续提出程序改进的建议和意见。
Quote: | ::LOOP.BAT
@echo off
if [%1]==[$sub] 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 [%predrive%]==[] goto end
dready %2: /w
if errorlevel 255 call setup.bat %predrive%:
:end
set predrive=%2 |
|
|

※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2004-1-26 00:00 |
|
|
walu
高级用户
   
积分 916
发帖 201
注册 2003-5-4
状态 离线
|
『第
7 楼』:
请教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:
又该怎样处理呢?
|
|
2004-1-27 00:00 |
|
|
willsort
元老会员
         Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
8 楼』:
Re walu:
给你一个思路,你可以自己也锻炼一下,遇到什么问题在探讨吧。
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=12&ID=9090
|

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