中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] [4] »
作者:
标题: [分享]批处理编程的异类 上一主题 | 下一主题
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 16 楼』:  

下面是一个按表顺序转换字符串的程序,原文来自本站开发室:
   http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?boardID=6&ID=9250

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

  Quote:
@echo off
if [%1]==[$] goto %2
if [%1]==[] 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 [%3]==[] goto overflow
set #a1=%#a1%-
if not [%#a1%]==[----------] goto count_2
set #a1=
set #a2=%#a2%+
if [%#a2%]==[++++++++++] goto overflow
:count_2
if [%3]==[%factor%] goto end
shift
goto count

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

:display 显示模块: 显示赋值结果
if [%error%]==[] 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:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 17 楼』:  


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

  Quote:
@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 [%elh%]==[1] for %%t in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %elh%%%t0 set elt=%elh%%%t
if [%elh%]==[2] for %%t in (0 1 2 3 4 5) do if errorlevel %elh%%%t0 set elt=%elh%%%t
if not [%elt%]==[25] for %%o in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %elt%%%o set el=%elt%%%o
if [%elt%]==[25] 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 [%1]==[@] echo current errolevel is %el%

[此贴子已经被作者于2004-2-6 15:02:07编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
pontiff
初级用户




积分 119
发帖 7
注册 2004-5-11
状态 离线
『第 18 楼』:  

Good
很精典的批处理

2004-5-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 19 楼』:  

楼主对批处理真是情有独钟,我先收下慢慢看,(忍不住先回帖,过两天争取有点收获)

本来我曾打算做一个遍历目录的批处理,但没写出来,后来用C 写,但结果也很笨拙——有些目录会死机。这种东西用DOS本身来完成是最好的了。

2004-6-22 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 20 楼』:  

我还不知道如何使用[30C  ,不过是否这样的小狗更像些呢?
@ECHO OFF
CLS
ECHO.
ECHO                  (\__
ECHO                 (\   `\__
ECHO    (`, .------.,-'     b i
ECHO    `-/            ',__,-"`
ECHO      7   `;      , /
ECHO      \   ;.----/ ,/
ECHO       ) // /  ( ( \
ECHO       \ \`.`\  \ \ \
ECHO        `-` `"   `-`"
PAUSE>NUL

2004-6-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
龙王
银牌会员




积分 1186
发帖 334
注册 2003-5-30
状态 离线
『第 21 楼』:  



  Quote:
以下是引用zww3008在2004-1-14 15:42:25的发言:
这些都是很精典的批处理程序,很值得初学者学习参考体味,如果不希望贴子灌水的话,那就请版主置顶吧!不要让贴子沉了。

好不容易再次找到
我真幸运~~
为了大家
我顶一把

2004-10-14 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (3113983)  编辑帖子
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『第 22 楼』:  

UPING



DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青![upload=bmp]uploadImages/20035317345478982.png[/upload]
2005-2-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
lhz95418005
初级用户




积分 106
发帖 3
注册 2005-2-25
状态 离线
『第 23 楼』:  

郁闷我怎么觉得学的东西越多不懂的东西越多啊刚开学本想再玩两天的明天还是去图书管吧[em01]

2005-2-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子
yangfw54
新手上路





积分 10
发帖 3
注册 2005-11-19
状态 离线
『第 24 楼』:  

确实是难得的好教材,再顶上来!

2005-11-20 14:28
查看资料  发送邮件  发短消息 网志   编辑帖子
doscc
中级用户




积分 256
发帖 93
注册 2006-3-26
来自 广东
状态 离线
『第 25 楼』:  


顶顶顶


2006-3-30 13:08
查看资料  发短消息 网志   编辑帖子
kmlxk
初级用户





积分 45
发帖 17
注册 2006-9-23
状态 离线
『第 26 楼』:  

O.O这么经典的东西,强得掉渣啊!

2006-9-30 09:29
查看资料  发送邮件  发短消息 网志  OICQ (86565242)  编辑帖子
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 27 楼』:  

忍不住在顶一下,怀念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'>"
2006-9-30 11:31
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 28 楼』:  

是啊,很久不见willsort兄的精彩“演讲”了,怀恋……

2006-10-20 03:06
查看资料  发送邮件  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 29 楼』:  

这么精彩的帖子怎么能让它沉下去~:)
欣赏~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-2-8 07:09
查看资料  发送邮件  发短消息 网志   编辑帖子
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 30 楼』:  

真不错

2007-2-8 08:40
查看资料  发送邮件  发短消息 网志   编辑帖子
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: