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

今天找了两篇原来保存的但是没正经看的讲批处理的帖子,虽然讲得比较粗,例子也很简单,但还是小有收获。计划中查可疑文件的批处理最好能用循环来写主体部分,因为涉及到比较多的文件路径和文件名,直接手工写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版发给同事和小郭了。

时间: 2024-08-01 12:38:48

可疑文件的批处理最好能用循环来写主体部分_DOS/BAT的相关文章

推荐一篇批处理最完整人性化教程第1/3页_DOS/BAT

这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字就能看懂,就能学到知识.写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人.一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前.  先概述一下批处理是个什么东东.批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个

DOS批处理高级教程 第二章 DOS循环for命令详解_DOS/BAT

讲FOR之前呢,咋先告诉各位新手朋友,如果你有什么命令不懂,直接在CMD下面输入: name /? 这样的格式来看系统给出的帮助文件,比如for /? 就会把FOR命令的帮助全部显示出来!当然许多菜鸟都看不懂....所以才会有那么多批处理文章!!!!俺也照顾菜鸟,把FOR命令用我自己的方式说明下! 正式开始: 一.基本格式 FOR %%variable IN (set) DO command [command-parameters] %%variable 指定一个单一字母表示可替换的参数. (s

BAT批处理中的字符串处理详解(字符串截取)_DOS/BAT

下面对这些功能一一进行讲解. 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符.举例说明其基本功能: 复制代码 代码如下: @echo off set ifo=abcdefghijklmnopqrstuvwxyz0123456789 echo 原字符串(第二行为各字符的序号): echo %ifo% echo 123456789012345678901234567890123456 echo 截取前5个字符: echo %if

DOS批处理之DATE命令的使用方法详解_DOS/BAT

1.系统帮助 C:\>date /? 显示或设置日期. DATE [/T | date] 仅键入 DATE 而不加参数,可以显示当前日期设置,并且提示 您输入新的日期.按 ENTER 键即可保持原有日期. 如果命令扩展名被启用,DATE 命令会支持 /T 命令选项:该命令选项告诉 命令只输出当前日期,但不提示输出新日期. 2.DATA /T 参数说明 此参数输出当前日期,例如: C:\>DATE /T 2002-10-28 星期一 这个日期格式可能不同与环境变量中的日期格式,如 C:\>

用批处理程序修改 计算机名 工作组 计算机描述的代码_DOS/BAT

复制代码 代码如下: @echo off echo 骏龙包装计算机名称.计算机描述.工作组修改批处理程序Echo pause cls :set/p id=请输入本机网段号: :set/p ip=请输入本机IP地址: :netsh interface ip set address name="本地连接" source=static addr=192.168.%id%.%ip% mask=255.255.255.0 set /p name=请输您的主机出厂S/N编号: reg add &q

DOS批处理中%~dp0等扩充变量语法详解_DOS/BAT

有时候我们看到别人使用%~dp0 ~是扩展的意思,相当于把一个相对路径转换绝对路径 %0代指批处理文件自身 %1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推 %~d0 是指批处理所在的盘符,其中d代表drive %~p0 是指批处理所在的目录,其中p代表path %~dp0 是批处理所在的盘符加路径 cd %~dp0 就是进入批处理所在目录了 详细解释还可参考命令 call /? DOS批处理中%~dp0表示什么意思 (注: %0 就是该 batch 文件的文件名) 这句的意

DOS批处理高级教程 第六章 if命令讲解_DOS/BAT

现在开始: 在CMD使用IF /?打开IF的系统帮助(自己看我就不全部列出来了),我们会发现IF有3种基本的用法! 执行批处理程序中的条件处理. IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command   NOT    指定只有条件为 false 的情况下, Windows XP 才应该执行该命令.   ERRORLEVEL number 如果最后运行

Norton Ghost批处理命令用法详细介绍第1/2页_DOS/BAT

.Ghost批处理文件的基本格式 Ghost-clone,mode={copy│load│dump},src={drive│file│drive:partition},dst={dri-ve│file│drive:partition}/fro/fx/rb/f32/Z(n)/sure{其他参数} 其主要参数的意思及用法如下: -clone:clone在英文中是"克隆"的意思,在此处是一个固定的格式,意为强制按参数方式执行Ghost.exe. mode=:此项参数用于设定Ghost.exe

批处理制作照片整理器第1/2页_DOS/BAT

最近相机里的照片比较多,一般是连拍了好几天之后,才把相机里的照片一股脑放到硬盘里,并且是隔上一两个星期才整理一次.日子一长,照片就多了起来,都分不清是什么时候拍的了.网上搜索了很久,找到一款名为PhotosTool的软件,可以按拍摄日期来整理照片,正合我意,只可惜,这个不到1M的小软件,居然要另外安装20余M的.NET 2.0,一气之下,用P写了一个类似功能的脚本,发出来大家玩玩. 曾经有一段时间,单位资料室的电脑中毒很深,保存有数十G工作照片的分区也惨遭毒手--那可是我们单位几年工作的心血啊!