上海星月国际商务广场:偶然发现 只有DOS下的FOR 循环可以查到 却无法删除

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 08:24:14
突然发现电脑中有个iexplore.pif的怪东东 知道中毒了 就手工清除了病毒源程序 手里有个查询文件的批处理程序 就搜索了一下 结果发现 所有的盘中每个目录中都存在这个文件 直接浏览是看不到的 系统搜索工具也搜索不到 用WINRAR也看不出来 只有用这个批处理可以看到 请高人帮我解释下这个文件是干什么的 我重新做了系统又查了查 新的系统盘中也有这个文件
好像默认都存在似的
下面的就是我的批处理文件 查询格式为:
批处理文件名 查询的盘符 文件名或者*.后缀名

示例
select C: iexplore.pif

@rem 首先关闭回显
@echo off
@rem 文件查询 存在则跳到 标签 no 不存在则跳到标签 yes
if exist 查询结果.txt (goto :yes) else goto no

@rem 下面是标签 yes
:yes
@echo off
del 查询结果.txt
goto no

@rem 下面是标签 no
:no
@echo 正在查询....
for /r %1 %%1 in (%2) do @echo %%1 >>查询结果.txt
@echo 查询完毕
if not exist 查询结果.txt @echo 没有查询到内容
break

呵呵,你的批处理写错了,根本不能实现查找文件的功能的。不相信的话可以用任意文件验证。
你的文件中其主要作用的是这一行:
for /r %1 %%1 in (%2) do @echo %%1 >>查询结果.txt
这一行的意思是按照一定格式把屏幕上的内容写到查询结果.txt里面。这个格式是"%1\你要查询的文件名",简单的说就是%%1。不管有没有都写,所以不能实现功能。

应该这样写:(去掉了所有注释)
@echo off
if exist 查询结果.txt (goto :yes) else goto no
:yes
del 查询结果.txt
goto no
:no
echo 正在查询....
for /r %1 %%1 in (%2) do if exist "%%1" @echo %%1 >>查询结果.txt
@echo 查询完毕
if not exist 查询结果.txt @echo 没有查询到内容
break

可以实现功能,你也可以用任意文件验证。
注意命令格式。

很长时间不写批处理了,还真忘记了,花了一点时间回忆了一下才完成,不容易啊。