中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 13:05
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 【共享】常用子过程、函数收集【专用帖】
可打印版本  4,060 / 12
第1楼 plp626 发表于 2008-04-25 13:06
银牌会员 发帖 1,020 积分 2,278
【共享】常用子过程、函数收集【专用帖】
如题,本帖主要对批处理脚本中频繁要用到的子过程或函数进行收集

欢迎大家把自己感觉很实用的小函数或这子过程发来与大家分享,请参照后面的四个尽量发来,也许有更好的算法可以改进,你也必定会受益匪浅, 当然好的东西大家还会加分。

为了保证大家浏览方便,严禁灌水,请不要在此发表与本帖无关的话题违者斩!

你若不支持请减分,支持请加分。后续我会不断充实“函数库”的。

大家可以在下面的帖子讨论,交流意见:

http://www.cn-dos.net/forum/viewthread.php?tid=38969&fpage=1 "批处理函数库"

以前我曾发过这个”【共同参与】批处理函数库“的讨论的帖子,效果不是很好,虽然论坛里有不少会员并不暂成这样的做法

,但毫无疑问,”代码重用“可以减少我们编写代码所花费的时间,提高工作效率,虽然这些子过程不能完全扮演高级语言的函数

的角色,但它确实给大家提供了方法或者思想,大家可酌情修改少量部分代码---”为我所用“,有的甚至可以直接照搬过去。

为了这些子过程或类函数真正能起到这些作用,我不得不做些要求,

函数要尽量通用、高效、封装、简洁
通用---大部分人都用得上,且常用到,几乎不需要修改或者直接照搬就可以直接使用。

高效---调用一次函数所花费的时间尽量少
封装---函数一旦给点不必去管它如何实现,它只起到一个批文件的作用,

简洁---代码简短,结构紧凑。

先举个例子来说明这点:
拿"马甲"的Timediff函数为例
原帖:http://www.cn-dos.net/forum/viewthread.php?tid=39775&fpage=1(此帖已经更新至----下面)

--------------------------------------------------------------------------------------------------------------------------
有更精简的代码:(标签前加上下滑线表示可以作为库函数调用,以区别于普通的函数)
http://www.cn-dos.net/forum/viewthread.php?tid=37382
计算两个时间点的差Etime


彩色字符函数colstr


基本形式就是
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::思路,基本介绍
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:funname <必选参数> ... ... <必选参数> ...
setlocal&rem 写紧凑些
do something
endlocal&if 有返回参数 (set %?=%返回%) else echo %返回%
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

[ Last edited by plp626 on 2009-10-9 at 12:49 ]
第2楼 plp626 发表于 2008-04-25 13:44
银牌会员 发帖 1,020 积分 2,278
目前已收录函数:
TimeDiff 显示两个时间点的差(1楼)
ColStr 彩色字符控制输出 (3楼)
---------------------------------函数名:见名知意------------
有关时间日期转换的函数库
DateToDOW
DateToDays
DateToMJD
DateToMins
DateToOrdinal
DateToSecs
DateToWeek
DayName
DayNumber
DaysToDate
GetDate
GetTime
MJDToDate
MinsToDate
MonthName
MonthNumber
OrdinalToDate
SecsToDate
WeekToDate
文件 网络 系统类

FileSizeComp
GetDirStats
IsDirEmpty
IsInPath
GetDG
GetIP
GetMAC
GetNA
GetSM
GetOS
IsRunning
Sleep
Timer
Uptime

----------------------------------------------

[ Last edited by plp626 on 2008-4-27 at 03:50 AM ]
第3楼 plp626 发表于 2008-04-25 14:19
银牌会员 发帖 1,020 积分 2,278
Colstr 单行彩色字符控制输出帮助文件



[ Last edited by plp626 on 2009-6-14 at 23:23 ]
第4楼 wxcute 发表于 2008-04-25 22:08
中级用户 发帖 211 积分 458
全盘搜索(不知道算不算,不是我写的):



调用:
第5楼 jvive 发表于 2008-04-25 22:17
初级用户 发帖 17 积分 122
Originally posted by naughtypack at 2008-4-25 05:54 PM:
学习一下,谢谢


报告楼主,4楼的灌水,请拖出去斩了!

我这个帖可不是水贴哦。

[ Last edited by jvive on 2008-4-25 at 10:26 PM ]
第6楼 523066680 发表于 2008-07-29 10:17
银牌会员 发帖 1,133 积分 2,362
plp已经一个月以上不在线了……灌灌水 没什么。
- “天高皇帝远”
很羡慕plp 他想法很多。把他当雷锋学习!
第7楼 uiopuiop 发表于 2009-06-07 09:15
中级用户 发帖 211 积分 400
彩色字符函数colstr的缺点
总体来说“彩色字符函数colstr”是不错的,但是发现有2个缺点。

1. 在%TMP%目录下生成了很多文件。(为了让FINDSTR使用)

2. 不能显示带:号的系统变量,如: %DATE%, %TIME%

希望能在以上两点上加强。
第8楼 plp626 发表于 2009-06-14 23:21
银牌会员 发帖 1,020 积分 2,278
Originally posted by uiopuiop at 2009-6-7 09:15 AM:
总体来说“彩色字符函数colstr”是不错的,但是发现有2个缺点。

1. 在%TMP%目录下生成了很多文件。(为了让FINDSTR使用)

2. 不能显示带:号的系统变量,如: %DATE%, %TIME%

希望能在以上两点上加强。


1.pushd %tmp%是不较好的选择了,总比在当前文件夹里生产一大批临时文件好
2.带冒号的字符串属于”非法文件名字符“,不能彩色显示,只能当作普通字符串显示

请键入 colstr “123:456” 试试
第9楼 zh159 发表于 2009-06-14 23:42
金牌会员 发帖 1,467 积分 3,687
彩色字符函数主要是利用文件名来生成彩色字符的,所以\/:*?"<>|字符不能正确处理
第10楼 huahua0919 发表于 2009-06-15 02:03
银牌会员 发帖 780 积分 1,608
不行了,很多都忘记了
第11楼 rabit123 发表于 2009-06-15 07:47
新手上路 发帖 6 积分 6
很不錯的說
只是,子过程写成子程序,不知道如何回传参数~
第12楼 rabit123 发表于 2009-06-15 07:48
新手上路 发帖 6 积分 6
很不錯的說
只是,子过程写成子程序,不知道如何回传参数~
我倒,該死的IE8~~~
让我重复发言了!
用临时文件回传参数貌似比较耗费资源。

[ Last edited by rabit123 on 2009-6-15 at 07:49 ]
第13楼 acaigg 发表于 2010-12-29 11:34
初级用户 发帖 92 积分 115
再顶一下此帖
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023