当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 可疑文件的批处理最好能用循环来写主体部分

DOS/BAT
Bootcfg 配置、查询或更改 Boot.ini 文件设置
Assoc显示或修改文件名扩展关联
at计划在指定时间和日期在计算机上运行命令和程序
使用 atmadm 来显示 ATM 适配器上传入和传出呼叫的统计信息
Attrib 显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性
可以使用的批处理参数集合
批处理下使用筛选器的函数
Getmac返回计算机中所有网卡的媒体访问控制 (MAC) 地址以及每个地址的网络协议列表
Cacls 显示或修改任意访问控制列表 (DACL) 文件
Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。
Chcp 显示活动控制台代码页数量,或更改该控制台的活动控制台代码页
Chdir (Cd) 显示当前目录的名称,或更改当前的文件夹
Chkntfs 显示或指定在启动计算机时计划的自动系统检查是否在 FAT、FAT32 或者 NTFS 卷上运行。
Cipher 在 NTFS 卷上显示或改变文件的加密
Cls 清除命令提示符窗口
Cmd 启动命令解释器 Cmd.exe 的新实例
Cmstp 安装或删除“连接管理器”服务配置文件
color 对于当前会话,更改命令提示窗口的前景和背景色
配置命令提示符的方法
Comp 逐字节地比较两个文件或几组文件的内容

DOS/BAT 中的 可疑文件的批处理最好能用循环来写主体部分


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 66 ::
收藏到网摘: n/a

今天找了两篇原来保存的但是没正经看的讲批处理的帖子,虽然讲得比较粗,例子也很简单,但还是小有收获。计划中查可疑文件的批处理最好能用循环来写主体部分,因为涉及到比较多的文件路径和文件名,直接手工写BAT的话太费劲。而for循环正好可以在一定程度上满足需求,所以对for循环的用法重点看了看,虽然还不太懂,但是试着写了几行代码,效果还可以。
实验中涉及到4个文件:list.txt,pre.bat,check.bat,check.log。
首先,要有list.txt,这个文件记录了所有可疑文件,每行写一个。这个需要手工写,但是只需要写文件路径和文件名,回车换行再写下一个即可,工作量说大也不大,说小也不小。形如:
……
%systemroot%\explorer.exe
%systemroot%\system32\rundll32.exe
……
第二,pre.bat,这是个预处理,是用来生成check.bat这个批处理的。其中使用了for循环,从list.txt中按行读出文件名,替换变量后写入到check.bat当中。这里面使用最多的是echo。在含有输出重定向的操作(包括for循环)中,因为写入check.bat的内容中又含有写入check.log的操作,所以这里使用了双引号,用以屏蔽掉其中一个输出重定向操作。这里就有了一个问题:本来写入check.bat中的命令带了双引号,失去了“命令”的作用而成了“字符串”,所以生成check.bat后还要手工删掉其中所有的双引号。这个不知道能不能用批处理来实现,我目前没有找到什么方法。pre.bat的内容如下:
@echo off
echo @echo off>> check.bat
echo echo BATCH STARTS...>> check.bat
echo echo PRESS ANY KEY TO START THE BATCH...>> check.bat
echo pause>> check.bat
echo "date /t>> check.log">> check.bat
echo "time /t>> check.log">> check.bat
echo "echo -------START------>> check.log">> check.bat
::以上均向check.bat中写入提示文字及命令。
for /F %%i in (list.txt) do echo "if exist %%i echo %%i & echo %%i>> check.log">> check.bat
::FOR循环,从list.txt中读取文件名,
::IF判断若存在文件则显示文件名并将其写入check.log中。
echo "echo -------END------>> check.log">>check.bat
echo echo BATCH ENDS!>> check.bat
echo echo PRESS ANY KEY TO EXIT...>> check.bat
echo pause>> check.bat
pause
第三,check.bat,这是真正用来检查可疑文件的,也是4个文件中最长的一个,由pre.bat生成之后,手工删除了其中所有的双引号(使用了记事本的替换功能,其实也很方便,完全没有什么工作量)。执行时,若存在可疑文件,则显示并写入记录文件check.log中。该文件内容形如:
@echo off
echo BATCH STARTS...
echo PRESS ANY KEY TO START THE BATCH...
pause
date /t>> check.log
time /t>> check.log
echo -------START------>> check.log
……
if exist %systemroot%\explorer.exe echo %systemroot%\explorer.exe & echo %systemroot%\explorer.exe>> check.log
if exist %systemroot%\system32\rundll32.exe echo %systemroot%\system32\rundll32.exe & echo %systemroot%\system32\rundll32.exe>> check.log
……
echo -------END------>> check.log
echo BATCH ENDS!
echo PRESS ANY KEY TO EXIT...
pause
第四,记录文件check.log,由check.bat生成,记录检查结果。形如:
2007-01-15
20:18
-------START------
……
C:\WINDOWS\explorer.exe
C:\WINDOWS\system32\rundll32.exe
……
-------END------
现在剩下的问题就是写list.txt了,具体有多少我没有统计,不过一天应该可以写完,明天可能王经理结账要来公司找我,如果没别的特殊情况的话,明天可以写完,差不多可以将1.0版发给同事和小郭了。