BAT、CMD脚本的编写与实际应用[转]

在微软官方的定义中,BAT属于批处理脚本(可以运行在DOS、WINDOWS下),是用来进行简化平时操作的批量化集成文件。而CMD,则是只能运行在NT系统下的批处理文件,其功能与BAT是一样的。

从早期的BAT开始,该文件就为大家提供了方便,并在WINDOWS出现后,它的能力可以说是万能的。从最基础的启动盘的引导,到注册表,甚至系统服务的操作,BAT与CMD都可以胜任。而且由于它简便的编写与通用性,很快就布满整个世界。

本文将简单介绍BAT与CMD脚本的编写过程,因为在下水平不高,所以如有错误欢迎指出!


一、BAT与CMD中的部分参数

1、定义文件夹的参数


目前我能够搜集到并可以给出意思的通用系统参数如下(不包括后边的解释部分):
%windir% ——操作系统文件夹,一般为C:下的WINDOWS文件夹
%sys% ——系统根目录,也就是C:盘目录
%programfiles% ——Program Files目录,安装程序通常都安装在这个目录下
%systemdrive% ——操作系统所在磁盘,与%sys%属于同一目录
%systemroot% ——操作系统文件夹,一般为C:下的WINDOWS文件夹
%InfDir% ——系统根目录,也就是C:盘目录
%TEMP% ——当前用户的临时目录,一般是C:"Documents and Settings"用户名"Local Settings"Temp目录

2、基础操作参数(可以在CMD命令行模式中输入HELP获得)


ASSOC 显示或修改文件扩展名关联。
AT 计划在计算机上运行的命令和程序。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
CACLS 显示或修改文件的访问控制列表(ACLs)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKCOMP 比较两个软盘的内容。
DISKCOPY 将一个软盘的内容复制到另一个软盘。
DOSKEY 编辑命令行、调用 Windows 命令并创建宏。
ECHO 显示消息,或将命令回显打开或关上。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除至少一个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个或两套文件,并显示不同处。
FIND 在文件中搜索文字字符串。
FINDSTR 在文件中搜索字符串。
FOR 为一套文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便跟 Windows 使用。
FTYPE 显示或修改用于文件扩展名关联的文件类型
GOTO 将 Windows 命令解释程序指向批处理程序中某个标明的行。
GRAFTABL 启用 Windows 来以图像模式显示扩展字符集。
HELP 提供 Windows 命令的帮助信息。
IF 执行批处理程序中的条件性处理。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建目录。
MKDIR 创建目录。
MODE 配置系统设备。
MORE 一次显示一个结果屏幕。
MOVE 将文件从一个目录移到另一个目录。
PATH 显示或设置可执行文件的搜索路径。
PAUSE 暂停批文件的处理并显示消息。
POPD 还原 PUSHD 保存的当前目录的上一个值。
PRINT 打印文本文件。
PROMPT 更改 Windows 命令提示符。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从有问题的磁盘恢复可读信息。
REM 记录批文件或 CONFIG.SYS 中的注释。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始批文件中环境更改的本地化。
SHIFT 更换批文件中可替换参数的位置。
SORT 对输入进行分类。
START 启动另一个窗口来运行指定的程序或命令。
SUBST 将路径跟一个驱动器号关联。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形模式显示驱动器或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 版本。
VERIFY 告诉 Windows 是否验证文件是否已正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。

3、扩展程序参数的部分参数(考虑到部分参数很危险,所以这里不提供)


cipher ——显示或更改 NTFS 分区上的目录(文件)的加密
defrag ——启动磁盘碎片整理程序
edit ——启动DOS下的文本编辑程序,在XP中也有保留
expand ——WINDOWS中自带的解压程序,可以把安装盘中文件名以_结尾的文件解压,NT系列的安装就是在DOS下用这个对文件进行解压后进行排序安装的
EXTRACT或extrac32 ——对CAB文件进行解压缩的程序,现在都用WINRAR,所以这个功能没什么保留价值了
makecab ——制作CAB压缩包的程序,对启动盘的制作倒很有用处
msg ——可以将消息发送给同网用户的程序,格式是[MSG 对方机器名 信息](不包括中括号)
ping ——可以检测网络的运行状态的程序,从WINDOWS时代开始就有了
proxycfg ——设置代理用的程序
regsvr32 ——服务注册程序,一般是插件的注册,也可以是解码器
reg或regedit ——注册表操作程序,有时候在BAT、CMD脚本中可以用这个参数进行注册表的修改操作
shutdown ——关机程序,可以在一定范围内控制一台或者一个局域网里所有机器的关机时间等
systeminfo ——查看系统当前配置情况的参数,也可以显示出运行时间等
TASKKILL ——进程删除程序,这个可以关闭至少一个进程
tasklist ——查看当前进程列表的程序

二、制作带向导功能的特殊结构脚本


看到标题大家可能会有点郁闷:BAT、CMD脚本也可以实现向导功能?
很荣幸的告诉大家,是的。BAT、CMD脚本不但可以实现脚本的向导功能,而且还可以结合大量的参数,组合成一个只需要不到100KB就可以通吃所有系统的工具包!
本介绍部分可以配合“结合Universal Extractor进行简单软件的绿化制作”所写的制作过程进行实况编写,不过限于篇幅关系,这里只对带有向导的BAT、CMD脚本进行解析。
首先让我们看一个简单的不能再简单的例子(后边标注部分在实际应用中是不会写进脚本的)——

@echo off ——隐藏操作过程,不对下边的操作进行显示
cls ——清除之前屏幕上的所有字符
title ——指定当前命令行窗口标题
COLOR 1F ——指定操作界面颜色,可以在命令行中输入 COLOR /? 来查看具体配置参数
echo *======================================================= ——在这里可以写入自己需要显示在命令行窗口中的内容,甚至可以做成由字符组成的图形界面

Code

pause ——在这里本来要在最后跟上exit参数让脚本退出,但是因为是脚本的最后部分,直接跟上PAUSE后用户随便一个操作都可以直接退出这个BAT,所以可以省略

仔细解析以上脚本,大家可以看到它的结构非常简单、明了,大致上就是[介绍页面-模式选择-操作过程-退出脚本]这样的结构。而且仔细看可以看到,标题一 直到退出的时候都没有进行过更改。所以如果有需要,可以在每步的项目的下面增加标题修改的脚本,这样就可以完全模拟出跟安装程序一样的过程了。

当然,如果需要获得与一般安装程序一样拥有软件说明、授权协议、选择项目等等步骤的话,就需要在这个脚本中进行一定的调整。

有的用户并不想拥有安装选项,那么可以参照以下的脚本来实现单页面安装——

@echo off ——隐藏操作过程,不对下边的操作进行显示
title ——修改当前命令行窗口的标题

Code

三、利用第三方工具进行基于脚本的软件的生成

这段时间在网上发现两个很好玩的工具:EXE2BAT 1.0 与 文件转换VBS.VBS

前者会把所有EXE文件经过DEBUG程序编写成BAT脚本,让用户在执行BAT脚本的同时可以还原该脚本中包含的文件,默认会执行还原后的文件,当然我 们可以修改生成后的脚本;后者会把所有文件都编写成BAT脚本,执行这个BAT文件的用户将得到原文件,过程不说也很清楚,这里就PASS。

不过有趣的是,两个工具都被杀软识别为“病毒制造机”,这个我实在是不明白。之后看了下软件的工作原理与应用范围,终于知道这两个小东西居然可以协助黑客进行攻击,真是不能小看了人们的思考能力啊~~

我这介绍两个工具并不是为了给你们做坏事,仅仅是作为一个参考,如果因为用这两个工具做坏事被抓了,表说你认识偶……

目前已经搞到了EXE2BAT的程序源代码,编译用的好象还是WIN32语言的样子(我看不懂……),以下是源代码——

 
Code

 

文件转换VBS的源代码如下(大家可以复制后保存成VBS文件,然后把任意文件拉到这个VBS文件上,将在目录下多出一个BAT文件,那个就是你的文件的“BAT版”了)——

 
Code

 

由于我现在写的是BAT、CMD批处理脚本的应用,所以在这里我们还是着重讲一下EXE2BAT。

我这里有一段由EXE2BAT生成的BAT脚本——

Code

 

大家将上面的代码复制后保存成一个.BAT文件后执行,看看你看到了什么?


从这里大家可以看出,EXE2BAT的操作原理是先将文件经过DEBUG程序进行编码,然后分解成字符保存。但是由于DEBUG不支持中文,所以如果转换的文件的文件名不是E文,转换后的文件名将会是乱码。


另外,为了一些人着想,我将不会提供这两个程序与我编写的BAT版EXE2BAT。如果有需要,可以自己研究这些软件的工作原理,这样还可以增加自己的经验,对不对?


最后,吃饭……

posted @ 2009-07-17 11:10  搬砖大师傅  阅读(3496)  评论(0编辑  收藏  举报