本帖最后由 plp626 于 2011-8-21 21:11 编辑
coolformat不支持批处理代码,这需要我们自己编写一个针对批处理代码风格的格式化工具
(语言不限,可以用vbs,也可以用C语言,批处理实现更好);
爱心提示:对cmd的预处理不精通者慎入
格式化标准:
tab符用4个空格代替,对于&连接的多个命令分行执行,在代码风格上做到结构紧凑,逻辑清晰;
举几个例:- FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
复制代码 格式化为:- FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do (
- @echo %i %j %k
- )
复制代码 =========================- IF EXIST filename. (
- del filename.
- ) ELSE (
- echo filename. missing.
- )
复制代码 格式化为:- IF EXIST filename. ( del filename. ) ELSE (
- echo filename. missing.
- )
复制代码 ======================- IF EXIST filename. (del filename.) ELSE echo filename1 missing.&if exist filename2 (del filename2) else echo filename2 missing.
复制代码 转换为:- IF EXIST filename. ( del filename. ) ELSE (
- echo filename1 missing.
- if exist filename2 ( del filename2 ) ELSE (
- echo filename2 missing.
- )
- )
复制代码 ======================- @echo off&setlocal enabledelayedexpansion
复制代码 格式化为:- @echo off
- setlocal enabledelayedexpansion
复制代码 其次,我们可以让这个格式化工具,支持代码体积最小化,
即格式化为最紧凑最短小格式(满足一些人的精小代码偏好)
最后,这个格式化工具支持把标签子过程,转换为“变量型函数”的功能(以便提高函数调用速度);
反之,我们也可以用该工具把变量型函数还原为标签子过程(以便我们阅读,和调试的方便)
(对于不能转换为变量型函数的,给出具体位置,用call来间接实现),举一个简单例子:- :strlen %1=变量名, %2=返回变量名
- set $=!%1!#
- set "%2="
- for %%a in (2048 1024 512 256 128 64 32 16 8 4 2 1)do (
- if !$:~%%a!. NEQ . set/a%2+=%%a&set $=!$:~%%a!
- )
复制代码 转化为:- set "_strlen=set $=!#1!#&set #2=&for %%a in (2048 1024 512 256 128 64 32 16 8 4 2 1)do if !$:~%%a!. NEQ . set/a#2+=%%a&set $=!$:~%%a!"
复制代码 或者为:- set "_strlen=set $=^!#1^!#&set #2=&for %%a in (2048 1024 512 256 128 64 32 16 8 4 2 1)do if ^!$:~%%a^!. NEQ . set/a#2+=%%a&set $=^!$:~%%a^!"
复制代码
|