注意,本项目由高手协助编写,尽量不要来一些意义不大的回复!
库文件是什么,大家可能看不懂。。。
现在正在编写一个批处理编写的软件,另辟蹊径。。。
这个软件的看点在于,对于复杂的编写只需要一行带过,然后再给加入功能相应的库文件。。。
首先,在这软件中编写批处理生成的是bcp工程文件,工程文件分三部分,头部、代码、库文件。。。
例如,我想实现统计变量长度的功能,只需要 call enStr var varlen 就可以了,变量var的长度保存在了varlen里面,然后在工程里面添加上“LenStr.bcl”文件。而在“LenStr.bcl”文件里面已经为我们写好了获得变量长度的功能。
当bcp需要编译成bat的时候,软件会将头部(color、mode等命令)和代码,还有库文件中的定义都保存进bat去。。。
现在大家大概都明白了库文件的意思了吧。。。
(对,库文件就像C++的头文件一样,帮你把麻烦的事情做好,你需要用只需要一句#include就可以了。。。)
那么我的项目就是希望大家能帮忙编写多点库文件。。。
现在大概有四个类别的库文件:数组(想高级语言一样,伪数组)、计算(浮点运算)、字串(常用处理,获取长度等)、时间(加减、比较等)
现在请大家帮忙编写库文件。。。
库文件的格式如下:- 库文件版本
- 库文件作者
- 库文件所需要其他库文件的支持
- 使用库文件需要保留的内容
- 描述
- //**//
- 开始定义
复制代码 如果实在不懂,我附上我自己写的NewArray.bcl库文件,实现定义一个1~3维的数组:- 1.0
- BatCodeer
- 不需要其他库的支持
- Newarray标签,arrays变量
- 定义了NewArray标签,用于定义新的数组,支持1-3维度。
- 用法:call :NewArray "Array" "Var"
- Array是形如array_2的字串符,其中array是数组名,2是一维长度。Var是数组的缺省值。定义二维数组则是形如array_2_2,三维则是array_2_2_2。
- 例如call :NewArray "array_2_2" "0",执行后变量array_1_1、array_1_2、array_2_1、array_2_2的值均为0
- 使用本库的时候可以给参数外加上双引号(如"array_2_2"),本库会自动处理
- 使用本库需要保留Newarray标签,arrays变量
- //**//
- :NewArray
- if "%~1"=="" goto :EOF
- for /f "eol= tokens=1-4 delims=_" %%1 in ("%~1") do (
- if "%%~2"=="" goto :EOF
- set arrays=%arrays%%%1;
- if "%%~3"=="" (
- for /l %%a in (1,1,%%2) do (
- set "%%1_%%a=%~2"
- )
- goto :EOF
- ) else (
- if "%%~4"=="" (
- for /l %%a in (1,1,%%2) do (
- for /l %%b in (1,1,%%3) do (
- set "%%1_%%a_%%b=%~2"
- )
- )
- ) else (
- for /l %%a in (1,1,%%2) do (
- for /l %%b in (1,1,%%3) do (
- for /l %%c in (1,1,%%4) do (
- set "%%1_%%a_%%b_%%c=%~2"
- )
- )
- )
- )
- )
- )
- goto :EOF
复制代码 那么请大家协助我完成库文件的编写!
(以下两张图,一个是头部的设置,一个是库文件的界面) |