中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 16:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享]批处理编程的异类 精华I 查看 31,032 回复 50
16 发表于 2004-02-06 00:00 ·  中国 山西 太原 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
下面是一个按表顺序转换字符串的程序,原文来自本站开发室:
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=6&ID=9250

此程序为批处理中字符串值的顺序转换而编写,一般作为子程序被其他程序调用,也可以将此程序稍做修改,添加入特定批处理程序中作为子模块调用。


@echo off
if == goto %2
if == goto nullargu

:main 主模块: count, match 句参数列表可以根据需要重新设定和增减
set factor=%1
call %0 $ count 1 2 3 4 5 7 8 9
call %0 $ match c d e f g h i j
goto display

:count 计数模块: 根据指定参数 factor 设置变量值 #a1, #a2
if == goto overflow
set #a1=%#a1%-
if not == goto count_2
set #a1=
set #a2=%#a2%+
if == goto overflow
:count_2
if == goto end
shift
goto count

:match 匹配模块: 循环递增变量 #b1, #b2, 若分别与 #a1, #a2 相等, 则指定结果值为当前循环的参数 3.
if == goto overflow
set #b1=%#b1%-
if not == goto match_2
set #b1=
set #b2=%#b2%+
if == goto overflow
:match_2
if == if == set result=%3
if not == goto end
shift
goto match

:display 显示模块: 显示赋值结果
if == echo %factor% convert %result%
set result=
set factor=
set error=
set #a1=
set #a2=
set #b1=
set #b2=
goto end

:nullargu
echo.
echo Error: argument 1 not specified.
echo.
goto end

verflow
echo.
echo Error: number is overflow.
set error=overflow
echo.
goto end

:end
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
17 发表于 2004-02-06 00:00 ·  中国 山西 太原 联通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线

下面是一个获取errorlevel值到环境变量的程序,原文来自本站开发室:
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=6&ID=9358

@echo off
set el=0
if errorlevel 1 set el=1
if not errorlevel 2 goto end

:partbydec
for %%h in (1 2) do if errorlevel %%h00 set elh=%%h
if == for %%t in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %elh%%%t0 set elt=%elh%%%t
if == for %%t in (0 1 2 3 4 5) do if errorlevel %elh%%%t0 set elt=%elh%%%t
if not == for %%o in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %elt%%%o set el=%elt%%%o
if == for %%o in (0 1 2 3 4 5) do if errorlevel %elt%%%o set el=%elt%%%o
set elh=
set elt=

:end
if not == echo current errolevel is %el%






※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
18 发表于 2004-05-13 00:00 ·  中国 云南 昭通 中移铁通
初级用户
积分 119
发帖 7
注册 2004-05-11 00:00
22年会员
UID 24052
性别 男
状态 离线
Good
很精典的批处理
19 发表于 2004-06-22 00:00 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
22年会员
UID 22966
性别 男
状态 离线
楼主对批处理真是情有独钟,我先收下慢慢看,(忍不住先回帖,过两天争取有点收获)

本来我曾打算做一个遍历目录的批处理,但没写出来,后来用C 写,但结果也很笨拙——有些目录会死机。这种东西用DOS本身来完成是最好的了。
20 发表于 2004-06-23 00:00 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
22年会员
UID 22966
性别 男
状态 离线
我还不知道如何使用












21 发表于 2004-10-14 00:00 ·  中国 河南 安阳 联通
银牌会员
★★★
积分 1,186
发帖 334
注册 2003-05-30 00:00
23年会员
UID 2626
性别 男
状态 离线
以下是引用zww3008在2004-1-14 15:42:25的发言:
这些都是很精典的批处理程序,很值得初学者学习参考体味,如果不希望贴子灌水的话,那就请版主置顶吧!不要让贴子沉了。

好不容易再次找到
我真幸运~~
为了大家
我顶一把
22 发表于 2005-02-24 00:00 ·  中国 山东 济宁 电信
中级用户
★★★
痴迷DOS者
积分 456
发帖 570
注册 2004-10-09 00:00
21年会员
UID 32281
性别 男
状态 离线
UPING
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
23 发表于 2005-02-25 00:00 ·  中国 山西 太原 中移铁通
初级用户
积分 106
发帖 3
注册 2005-02-25 00:00
21年会员
UID 36475
性别 男
状态 离线
郁闷我怎么觉得学的东西越多不懂的东西越多啊刚开学本想再玩两天的明天还是去图书管吧
24 发表于 2005-11-20 14:28 ·  中国 辽宁 葫芦岛 中移铁通
新手上路
积分 10
发帖 3
注册 2005-11-19 21:20
20年会员
UID 45570
性别 男
状态 离线
确实是难得的好教材,再顶上来!
25 发表于 2006-03-30 13:08 ·  中国 广东 广州 中移铁通
中级用户
★★
积分 256
发帖 93
注册 2006-03-26 22:12
20年会员
UID 52853
性别 男
来自 广东
状态 离线

顶顶顶
26 发表于 2006-09-30 09:29 ·  中国 重庆 电信
初级用户
积分 45
发帖 17
注册 2006-09-23 13:24
19年会员
UID 63469
状态 离线
O.O这么经典的东西,强得掉渣啊!
27 发表于 2006-09-30 11:31 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
忍不住在顶一下,怀念willsort

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
28 发表于 2006-10-20 03:06 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
是啊,很久不见willsort兄的精彩“演讲”了,怀恋……
29 发表于 2007-02-08 07:09 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
这么精彩的帖子怎么能让它沉下去~:)
欣赏~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
30 发表于 2007-02-08 08:40 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
真不错
论坛跳转: