自动脚本工具新版 v2.0

自动脚本工具 下载

下载工具后,解压,直接双击 "execute.bat" 文件后(前提已配置好 jdk 1.7 的环境),会生成文件夹 "output",该文件夹下会有生成的对应语言的脚本。

你也可以先尝试修改文件 “config_example.xml” 的配置项,再运行 "execute.bat",看 "output" 文件夹下的文件有什么变化,对于程序员来说应该是很简单的东西了。

新版本支持同步输出 as3(对象+宏), java(对象+宏), c#(对象+宏), mysql(对象), js(宏), lua(宏) 的脚本了。

工具主要目的就是输出不同目标语言下相同的数据对象类定义,和宏类定义。配置详细

[type] 支持的 type 类型
|---boolean : 布尔
|---integer8 : 8 位整型
|---integer16 : 16 位整型
|---integer32 : 32 位整型
|---integer64 : 64 位整型
|---decimal32 : 32 位小数
|---decimal64 : 64 位小数
|---string : 字符串
|---array : 数组,默认泛型类型为 object
|---dictionary : 字典,默认泛型类型为 object
|---date : 日期
|---object : 基类型

[value] 对应 type 类型支持的默认值
|---boolean : true/false 真/假
|---string : 非 null 时,输出会自动添加引号
|---date, array, dictionary : new 构造对象
|---object : null 空值

[Macros][group]
|---宏的分组,当不指定宏类型时,则被系统归为分组中,自动指定类型为 integer32,指定一个系统值
|---值结构为 0x7FFFFFFF,从左到右,第0位始终为0,第1-11位表示所在的组,第12-31表示宏值。如 宏 0x00100001 表示该宏在分组 1 (第 1-11 位 : 0x001) 中,值为 1 (第 12-31 位 : 0x00001)
|---分组不能嵌套

[AutoScript] 以包为单位定义对象和宏
|---package : 默认包路径 - 非必需
|---packageAs3 : as3 包路径,如果未指定,则使用 package - 非必需
|---packageJava : java 包路径,如果未指定,则使用 package - 非必需
|---packageNet : c# 包路径,如果未指定,则使用 package - 非必需
|---packageDB : mysql 数据库名,如果未指定,则使用 package 的最内层包名,如果也未指定,则系统默认为 dbScript - 非必需
|---packageJS : js 包路径,如果未指定,则使用 package - 非必需
|---packageLua : lua 包路径,如果未指定,则使用 package - 非必需
|---[Object] 对象数据
	|---name : 对象数据类名(即文件名), - 必需
	|---extend : 基类 - 非必需
	|---note : 对象数据注释 - 非必需
	|---nameTable : 该对象数据对应的 mysql 表名,如果未指定,则使用 name - 非必需
	|---autoIncrement : mysql 中主键自增起始值 - 非必需
	|---[ImportAs3][ImportJava][ImportNet] 对象数据需要引用的其它对象
		|---value : 引用的对象完整包路径+类名,如 java.util.Date - 必需
	|---[Property] 对象数据属性
		|---name : 属性名,c# 输出时会首字母大写 - 必需
		|---type : 属性默认类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需
		|---value : 属性默认值,特殊值见 [value],其它值则会原样输出 - 非必需
		|---note : 属性注释 - 非必需
		|---typeAs3 : as3 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
		|---valueAs3 : as3 属性围住值,如果未指定,则使用 value - 非必需
		|---typeJava : java 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
		|---valueJava : java 属性默认值,如果未指定,则使用 value - 非必需
		|---typeNet : c# 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
		|---valueNet : c# 属性默认值,如果未指定,则使用 value - 非必需
		|---typeDB : mysql 字段类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需
		|---valueDB : mysql 字段默认值,如果未指定,则使用 value - 非必需
		|---restrictDB : mysql 字段约束,如 NOT NULL - 非必需
|---[Macros] 一组宏的定义,该定义下的直系 [Macro] 占用第 1 个分组
	|---name : 宏类名(即文件名) - 必需
	|---groupStart : 指定分组的起始序号,最小值为 0
	|---groupEnd : 指定分组的结束序号,如果小于 groupStart,则默认为 0x7FF
	|---note : 宏类注释 - 非必需
	|---[Macro] 宏
		|---name : 宏名 - 必需
		|---type : 宏类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需
		|---value : 宏默认值,特殊值见 [value],其它值则会原样输出 - 非必需
		|---note : 宏注释
	|---[Group] 宏分组,同 [Macro] 定义一样会生成一个宏,如果不指定类型,则系统指定的值结构为:分组位为当前分组,值部分为0
		|---name : 分组(宏)名
		|---type : 分组(宏)类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需
		|---value : 分组(宏)默认值,特殊值见 [value],其它值则会原样输出 - 非必需
		|---note : 分组(宏)注释
		|---[Macro] 分组中的宏

配置模板

 1 <AutoScript package="" packageAs3="" packageJava="" packageNet="" packageDB="" packageJS="" packageLua="">
 2
 3     <Object name="" extend="" note="" nameTable="" autoIncrement="">
 4         <ImportAs3 value=""/>
 5         <ImportJava value=""/>
 6         <ImportNet value=""/>
 7         <Property name="" type="" value="" note="" typeAs3="" valueAs3="" typeJava="" valueJava="" typeNet="" valueNet="" typeDB="" valueDB="" restrictDB=""/>
 8     </Object>
 9
10     <Macros name="" groupStart="" groupEnd="" note="">
11         <Macro name="" type="" value="" note=""/>
12         <Group name="" type="" value="" note="">
13             <Macro name="" type="" value="" note=""/>
14         </Group>
15     </Macros>
16
17 </AutoScript>

批文件模板

 1 @echo off
 2
 3 java -classpath ./libs/*; AutoScript ^
 4 -config ./config_example.xml ^
 5 -pathAs3 ./output/as3/ ^
 6 -pathJava ./output/java/ ^
 7 -pathNet ./output/net/ ^
 8 -net2one netLib ^
 9 -pathDB ./output/mysql/ ^
10 -pathJS ./output/js/ ^
11 -pathLua ./output/lua/
12
13 pause
14
15 @echo on
16 exit
17
18
19 ::输出配置文件中的对象数据和宏
20 ::-config 后可以指定多个配置文件,如 -config config_a.xml config_b.xml
21 ::-pathAs3 输出 as3 文件路径(如果需要输出 as3 脚本)
22 ::-pathJava 输出 java 文件路径(如果需要输出 java 脚本)
23 ::-pathNet 输出 c# 文件路径(如果需要输出 c# 脚本)
24 ::-net2one 如果指定的话,将会把每一个配置文件(如 config_a.xml)里的所有对象(节点 Object)输出到一个 .cs 文件中 。后接 .cs 文件名(数量与 -config 指定的文件数量一一对应),如 -config ./configA.xml ./configB.xml -net2one a b,将会输出 a.cs 和 b.cs 文件
25 ::-pathDB 输出 mysql 脚本文件路径(如果需要输出 mysql 脚本)
26 ::-pathJS 输出 js 文件路径(如果需要输出 js 脚本)
27 ::-pathLua 输出 lua 文件路径(如果需要输出 lua 脚本)

比如:客户端与服务端需要统一请求和返回命令、错误码之类的,就可以只需要维护宏定义配置文件。直接输出客户端和服务端的宏定义类。

 1 <Macros name="ReqRsp" groupStart="1" groupEnd="100" note="请求返回命令">
 2     <Macro name="WELCOME" type="string" value="欢迎使用"/>
 3     <Macro name="ERROR_PASSWORD" type="integer32" value="1" note="密码错误"/>
 4
 5     <Group name="Register" note="注册">
 6         <Macro name="register_req" note="注册账号请求"/>
 7         <Macro name="register_rsp" note="注册请求返回"/>
 8     </Group>
 9 </Macros>
10 <Macros name="Errors" groupStart="101" groupEnd="200" note="错误码">
11     <Macro name="WELCOME" type="string" value="欢迎使用"/>
12     <Macro name="ERROR_PASSWORD" type="integer32" value="1" note="密码错误"/>
13
14     <Group name="Register" note="注册">
15         <Macro name="username_existed" note="登录名已存在"/>
16         <Macro name="email_necessary" note="需要填写电子邮箱"/>
17     </Group>
18 </Macros>

配置宏示例

 1 package com.test
 2 {
 3
 4     /** 请求返回命令 */
 5     public class ReqRsp
 6     {
 7
 8         static public const WELCOME:String = "欢迎使用";
 9         /** 密码错误 */
10         static public const ERROR_PASSWORD:int = 1;
11
12         /** 注册 */
13         static public const REGISTER:int = 2097152;
14         /** 注册账号请求 */
15         static public const REGISTER_REQ:int = 2097153;
16         /** 注册请求返回 */
17         static public const REGISTER_RSP:int = 2097154;
18
19     }
20 }

输出 as3 ReqRsp

 1 package com.test
 2 {
 3
 4     /** 错误码 */
 5     public class Errors
 6     {
 7
 8         static public const WELCOME:String = "欢迎使用";
 9         /** 密码错误 */
10         static public const ERROR_PASSWORD:int = 1;
11
12         /** 注册 */
13         static public const REGISTER:int = 106954752;
14         /** 登录名已存在 */
15         static public const USERNAME_EXISTED:int = 106954753;
16         /** 需要填写电子邮箱 */
17         static public const EMAIL_NECESSARY:int = 106954754;
18
19     }
20 }

输出 as3 Errors

 1 package com.test;
 2
 3 /** 请求返回命令 */
 4 public class ReqRsp {
 5
 6     static public final String WELCOME = "欢迎使用";
 7     /** 密码错误 */
 8     static public final int ERROR_PASSWORD = 1;
 9
10     /** 注册 */
11     static public final int REGISTER = 2097152;
12     /** 注册账号请求 */
13     static public final int REGISTER_REQ = 2097153;
14     /** 注册请求返回 */
15     static public final int REGISTER_RSP = 2097154;
16
17 }

输出 java ReqRsp

 1 package com.test;
 2
 3 /** 错误码 */
 4 public class Errors {
 5
 6     static public final String WELCOME = "欢迎使用";
 7     /** 密码错误 */
 8     static public final int ERROR_PASSWORD = 1;
 9
10     /** 注册 */
11     static public final int REGISTER = 106954752;
12     /** 登录名已存在 */
13     static public final int USERNAME_EXISTED = 106954753;
14     /** 需要填写电子邮箱 */
15     static public final int EMAIL_NECESSARY = 106954754;
16
17 }

输出 java Errors

 1 namespace com.test
 2 {
 3     /// <summary>
 4     /// 请求返回命令
 5     /// </summary>
 6     public class ReqRsp
 7     {
 8
 9         public const System.String WELCOME = "欢迎使用";
10         /// <summary>
11         /// 密码错误
12         /// </summary>
13         public const System.Int32 ERROR_PASSWORD = 1;
14
15         /// <summary>
16         /// 注册
17         /// </summary>
18         public const System.Int32 REGISTER = 2097152;
19         /// <summary>
20         /// 注册账号请求
21         /// </summary>
22         public const System.Int32 REGISTER_REQ = 2097153;
23         /// <summary>
24         /// 注册请求返回
25         /// </summary>
26         public const System.Int32 REGISTER_RSP = 2097154;
27
28     }
29 }

输出 c# ReqRsp

 1 namespace com.test
 2 {
 3     /// <summary>
 4     /// 错误码
 5     /// </summary>
 6     public class Errors
 7     {
 8
 9         public const System.String WELCOME = "欢迎使用";
10         /// <summary>
11         /// 密码错误
12         /// </summary>
13         public const System.Int32 ERROR_PASSWORD = 1;
14
15         /// <summary>
16         /// 注册
17         /// </summary>
18         public const System.Int32 REGISTER = 106954752;
19         /// <summary>
20         /// 登录名已存在
21         /// </summary>
22         public const System.Int32 USERNAME_EXISTED = 106954753;
23         /// <summary>
24         /// 需要填写电子邮箱
25         /// </summary>
26         public const System.Int32 EMAIL_NECESSARY = 106954754;
27
28     }
29 }

输出 c# Errors

 1 var com_test_ReqRsp = {
 2
 3     "WELCOME" : "欢迎使用",
 4     "ERROR_PASSWORD" : 1, // 密码错误
 5
 6     "REGISTER" : 2097152, // 注册
 7     "REGISTER_REQ" : 2097153, // 注册账号请求
 8     "REGISTER_RSP" : 2097154, // 注册请求返回
 9
10 };

输出 js ReqRsp

 1 var com_test_Errors = {
 2
 3     "WELCOME" : "欢迎使用",
 4     "ERROR_PASSWORD" : 1, // 密码错误
 5
 6     "REGISTER" : 106954752, // 注册
 7     "USERNAME_EXISTED" : 106954753, // 登录名已存在
 8     "EMAIL_NECESSARY" : 106954754, // 需要填写电子邮箱
 9
10 };

输出 js Errors

 1 com_test_ReqRsp = {
 2
 3     ["WELCOME"] = "欢迎使用",
 4     ["ERROR_PASSWORD"] = 1, -- 密码错误
 5
 6     ["REGISTER"] = 2097152, -- 注册
 7     ["REGISTER_REQ"] = 2097153, -- 注册账号请求
 8     ["REGISTER_RSP"] = 2097154, -- 注册请求返回
 9
10 };

输出 lua ReqRsp

 1 com_test_ReqRsp = {
 2
 3     ["WELCOME"] = "欢迎使用",
 4     ["ERROR_PASSWORD"] = 1, -- 密码错误
 5
 6     ["REGISTER"] = 2097152, -- 注册
 7     ["REGISTER_REQ"] = 2097153, -- 注册账号请求
 8     ["REGISTER_RSP"] = 2097154, -- 注册请求返回
 9
10 };

输出 lua Errors

比如数据传输,像 as3 与 java 通信的 amf3 协议,可以传输对象。配置如下

1 <Object name="VOUser" note="用户对象" nameTable="t_user">
2     <Property name="id" type="integer32" note="标识" restrictDB="PRIMARY KEY"/>
3     <Property name="isBoy" type="boolean" value="true"/>
4     <Property name="dateTime" type="date" value="new"/>
5 </Object>

配置对象类示例

 1 package com.test
 2 {
 3     /** 用户对象 */
 4     public class VOUser
 5     {
 6
 7         //============================================================================
 8         //PROPERTY
 9         //============================================================================
10         private var _id:int;
11         private var _isBoy:Boolean = true;
12         private var _dateTime:Date = new Date();
13         //============================================================================
14         //CONSTRUCTOR
15         //============================================================================
16         public function VOUser() {}
17         //============================================================================
18         //GETTER_SETTER
19         //============================================================================
20         /** 标识 */
21         public function get id():int { return _id; }
22         /** @private */
23         public function set id(value:int):void { this._id = value; }
24
25         public function get isBoy():Boolean { return _isBoy; }
26         public function set isBoy(value:Boolean):void { this._isBoy = value; }
27
28         public function get dateTime():Date { return _dateTime; }
29         public function set dateTime(value:Date):void { this._dateTime = value; }
30
31     }
32 }

输出 as3 VOUser

 1 package com.test;
 2
 3 /** 用户对象 */
 4 public class VOUser {
 5
 6     //============================================================================
 7     //PROPERTY
 8     //============================================================================
 9     private int id;
10     private boolean isBoy = true;
11     private java.util.Date dateTime = new java.util.Date();
12     //============================================================================
13     //CONSTRUCTOR
14     //============================================================================
15     public VOUser() {}
16     //============================================================================
17     //GETTER_SETTER
18     //============================================================================
19     /** 标识 */
20     public int getId() { return id; }
21     /** 标识 */
22     public void setId(int value) { this.id = value; }
23
24     public boolean getIsBoy() { return isBoy; }
25     public void setIsBoy(boolean value) { this.isBoy = value; }
26
27     public java.util.Date getDateTime() { return dateTime; }
28     public void setDateTime(java.util.Date value) { this.dateTime = value; }
29
30 }

输出 java VOUser

 1 namespace com.test
 2 {
 3     /// <summary>
 4     /// 用户对象
 5     /// </summary>
 6     public class VOUser
 7     {
 8         //============================================================================
 9         //PROPERTY
10         //============================================================================
11         private System.Int32 _id;
12         private System.Boolean _isBoy = true;
13         private System.DateTime _dateTime = System.DateTime.Now;
14         //============================================================================
15         //CONSTRUCTOR
16         //============================================================================
17         public VOUser() {}
18         //============================================================================
19         //GETTER_SETTER
20         //============================================================================
21         /// <summary>
22         /// 标识
23         /// </summary>
24         public System.Int32 Id
25         {
26             get { return _id; }
27             set { this._id = value; }
28         }
29
30         public System.Boolean IsBoy
31         {
32             get { return _isBoy; }
33             set { this._isBoy = value; }
34         }
35
36         public System.DateTime DateTime
37         {
38             get { return _dateTime; }
39             set { this._dateTime = value; }
40         }
41
42     }
43 }

输出 c# VOUser

 1 DROP DATABASE IF EXISTS db_test;
 2 CREATE DATABASE db_test DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
 3
 4 USE db_test;
 5
 6 #----------------------------------------------------------------------------
 7 #用户对象
 8 DROP TABLE IF EXISTS t_user;
 9 CREATE TABLE t_user(
10     id INT PRIMARY KEY COMMENT "标识"
11     , isBoy TINYINT DEFAULT 1
12     , dateTime DATETIME DEFAULT NULL
13 )DEFAULT CHARSET = UTF8 COLLATE UTF8_GENERAL_CI;
14 DESC t_user;

输出 mysql 脚本

时间: 2024-08-25 07:43:18

自动脚本工具新版 v2.0的相关文章

dingo/API 最新版 V2.0 之安装讲解

我发现关于dingo/API V2.0的资料少之又少,应该也是发布时间不久的原因.下面,我就来给大家讲解(翻译)下官方的英文文档,如果有说的不对的地方,请指正.先附上,官网wiki地址https://github.com/dingo/api/wiki. The Dingo API package is meant to provide you, the developer, with a set of tools to help you easily and quickly build your

跨平台日志清理工具 Log-Cutter v2.0.2 正式发布

Log-Cutter 是JessMA开源组织开发的一个简单实用的日志切割清理工具.对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能.如果用手工方式进行清理,会花费太多时间,并且很多时候难以满足实际要求.例如:如何在每个星期六凌晨3点把超过 2G 大的日志文件进行切割,保留最新的 100M 日志记录? 网上没有发现能满足本座要求的日志切割工具,因此花了一些闲暇时间自己写了一个.由于要在多个平台上使用,为了方便采用 Java 实现.本工具命名为

注册表对比工具(Regshot) V2.0.1 中文绿色版

软件名称: 注册表对比工具(Regshot)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / WinXP软件大小: 263KB图片预览: 软件简介:Regshot 是一个免费的注册表对比工具,这个软件可以扫描并保存注册表的“快照”,并对两次快照进行自动的对比,找出快照间存在的不同之处,结果可以保存成txt或者是html文档 对比注册表的方法:1.打开Regshot,勾选"扫描",点击“摄取[1]”,这样就能记录下当前注册表和文件夹的结构2.点击“摄取[2

第四节:dingo/API 最新版 V2.0 之 Responses (连载)

因为某些某些原因,不能按时更新,唉.我会尽力,加快速度.(这句话不是翻译的哈) 原文地址--> https://github.com/dingo/api/wiki/Responses A functioning API is built upon receiving requests and returning a consumable response to the client. An API will generally return responses in an easy to con

百度地图V2.0实践项目开发工具类bmap.util.js V1.4

/** * 百度地图使用工具类-v2.0(大眾版) * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email [email protected] * @company KWT.Shenzhen.Inc.com * @notice 有些功能需要加入外部JS库才能使用,另外还需要申请地图JS key . * 申请地址:http://developer.baidu.com/map/apply-key.ht

OEM信息自定义工具v2.0

支持win7系统属性OEM信息自定义修改 内置:联想,宏基,三星,惠普,戴尔,华硕,明基,方正,同方,东芝,康柏,富士通,LG,索尼,IBM,,Alienware,Tginkapad 这些OEM相关.参照 win7_oem信息修改工具v1.0制作,有所调整,界面更简洁. 表示对 dmqhcx88 年老痴呆 的感谢..自动判断系统位数,支持:Win7_86/64 OEM修改器.rar DIY,必备.... 绿野仙踪下载:http://pan.baidu.com/s/1c0oyXlI 备份下载:ht

Calcusyn.v2.0 1CD(准确的分析联合用药作用,能够自动量化现象如协同和抑制作用)

Calcusyn.v2.0 1CD(准确的分析联合用药作用,能够自动量化现象如协同和抑制作用)CalcuSyn是分析药物复合交互作用,能够自动量化各种现象如协同和抑制作用.混合药物治疗已成为常见的治疗癌症,艾滋病等,CalcuSyn 是最广泛使用的软件建立在这一领域的有效性.  CalcuSyn可以很容易地与其它软件整合,数据可以通过键盘输入到工作表进入到分析引擎,同时处理个别药品和固定比例或非固定比例组合 药物.CalcuSyn自动生成图表的数据和报告提供的统计摘要,对所有的药物加上详细的分析

DedeCMS顽固木马后门专杀工具V2.0实现方式研究

catalog 1. 安装及使用方式 2. 检查DEDECMS是否为最新版本 3. 检查默认安装(install)目录是否存在 4. 检查默认后台目录(dede)是否存在 5. 检查DedeCMS会员中心是否关闭 6. 检查是否存在高风险的若密码账户 7. 后台友情链接xss漏洞 8. /plus/search.php SQL注入漏洞 9. /plus/feedback.php SQL注入漏洞 10. /plus/feedback_ajax.php SQL注入或XSS漏洞漏洞 11. /incl

同福脚本平台V2.0 源代码

武林外传 同福客栈脚本平台V2.0源码,Lua脚本支持,采用C++ Builder 6 编译,不提供更新方法,此源码仅供交流研究使用,如使用此源码产生的任何法律问题,与原作者无任何关系,责任自负! http://pan.baidu.com/s/1pJAzSQv