Board logo

标题: 如何在批处理中模拟像瑞星扫描时列举路径的显示效果? [打印本页]

作者: 002500     时间: 2006-10-14 22:36    标题: 如何在批处理中模拟像瑞星扫描时列举路径的显示效果?

使用以下代码显示所有文件 显示的文件是一行行的
for /r %%c in (*.*) do echo %%c

我想做到这种效果:
@mode con:cols=80 lines=8
@title 枚举并适时显示
@color 71
@echo   正在枚举中..........
@for /r %%d in (*.*) do @(
              @echo %%d >>result.txt && @title %%d
      )                             
@title 枚举并适时显示  
@start result.txt  
@echo.  
@echo   OK,完成 正在退出..........
@dir %windir% /a /s>nul
exit

但不是让列举文件显示在标题上  如何让其显示在窗口中呢

(cmd@xp_sp2)
作者: my3439955     时间: 2006-10-14 22:46
加入cls就行了啊
@mode con:cols=80 lines=8
@title 枚举并适时显示
@color 71
@echo   正在枚举中..........
@for /r %%d in (*.*) do @(
              @echo %%d >>result.txt && @(cls && echo%%d)
      )                             
@title 枚举并适时显示  
@start result.txt  
@echo.  
@echo   OK,完成 正在退出..........
@dir %windir% /a /s>nul
exit
作者: my3439955     时间: 2006-10-14 23:00

@echo off
mode con:cols=80 lines=8
title 枚举显示
set tgt=%windir%
for /F "tokens=*" %%i in ('dir %tgt% /A- /B /S') do @(cls && echo %%i && for /L %%k in (1,1,100) do @ver>nul)
刚才那个会无视隐藏文件
这个会看得到的
作者: my3439955     时间: 2006-10-14 23:13
不过要先等上一会才出结果
作者: 002500     时间: 2006-10-14 23:21
呵呵 我真笨 怎么没想到用cls呢  

谢谢 my3439955
作者: lxmxn     时间: 2006-10-15 14:05

  我也发一个模拟瑞星扫描的窗口出来: :)
@echo off
mode con cols=100 lines=6
color 34
for /f "tokens=*" %%i in ('dir c:\*.* /b/s/a-d') do (
@title 扫描%%~si>nul && @echo. && @echo       瑞星杀毒系统正在对下列文件进行全面的扫描: && @echo. && @echo %%~fi && ping 127.0.0.1 -n 1 -w 1000>nul 2>nul && cls
)
pause

  
  声明:以上代码仅供学习研究使用,出现任何损失,本人概不负责。


[ Last edited by lxmxn on 2006-10-16 at 04:32 ]
作者: 1980623     时间: 2006-10-15 22:07
大哥能讲一下吗??没太看明白??????????
作者: redtek     时间: 2006-10-16 01:34


  Quote:
Originally posted by lxmxn at 2006-10-15 14:05:

  我也发一个模拟瑞星扫描的窗口出来: :)

[code]
@echo off
mode con cols=100 lines=6
color 34
for /f "tokens=*" %%i in ('dir c:\*.* /b/ ...

恭喜 lxmxn,你可发明新东西啦~:)))
我在 Windows Server 2003 上运行这个批处理,
结果好玩的事情发生了:

刚运行了1秒钟后,系统键盘失灵然后突然蓝屏(Server版少见啊),
而且蓝屏以后连我按重启都不行,它自己就重启了,哈哈哈……
这可以做为攻击性的一种代码~:)  顶一个!
(还更奇怪,重启以后我回来找那个我存的  a.bat 这个文件,居然没了!!!)
(为什么文件为没?存过盘的,执行了以后虽蓝屏重启,但这个被执行的文件没了?哈哈)

(顶!!!!如果这现象可以重复多次发生,那么足可以做为攻击别人的文件自杀方法,哈哈)



我觉得很奇怪,于是开启虚拟机(VMWare PC),环境也是WIN2003版。
结果又试了一遍,蓝屏D机:)哈哈哈……

虚拟机D机蓝屏的窗口我截图了,大家研究吧:)



lxmxn留好这个伟大的发明:)))
对了,我那个虚拟机上的所有上面DIR列出来的文件约为7万多个。
会不会因为 for获得的文件数量太多而溢出?
附件 1: 1.JPG (2006-10-16 01:34, 12.68 K, 下载附件所需积分 1点 ,下载次数: 3)



作者: redtek     时间: 2006-10-16 01:56
第6次实验……

环境:虚拟机 WIN2003服务器版,内存800MB
@echo off
mode con cols=100 lines=6

pause

color 34

pause

for /f "tokens=*" %%i in ('dir e:\*.* /b/s/a-d') do (
@title 扫描%%~si>nul && @echo. && @echo       瑞星杀毒系统正在对下列文件进行全面的扫描: &&
@echo. && @echo %%~fi && ping 127.0.0.1 -n 2 -w 1000>nul 2>nul && cls
)
pause
这回我换成了E盘,我E盘几乎是空的,才有1500多个文件,1千多个文件不算多。


程序运行过程中非常好,约2秒显示一个文件名。

但是,我实在等不了,约等了它显示了10个文件名以后(才10个!!!),
然后CTRL+C终止程序。

可以被终止,然后我想再重新试验一次,于是 EXIT 命令退出这个DOS窗口,
又奇怪的事情发生了,能正常退出。表面上看没什么问题,但是……

我想再次实验一次,又重新运行CMD,这回没反应了,3秒后蓝屏出现!!!
哈哈……
(有兴趣的可以试试,顶多蓝屏重启~:)

[ Last edited by redtek on 2006-10-16 at 02:01 ]
作者: electronixtar     时间: 2006-10-16 02:21
楼上的实验不可再现。我试了n次都没发现有这个问题

而且不是没两秒显示一个,是一秒显示3个

[ Last edited by electronixtar on 2006-10-16 at 02:22 ]
作者: redtek     时间: 2006-10-16 02:52
你  copy con a.bat 的方式还存盘,试一下,硬盘文件不少于几千。
(拷贝6楼代码)
一定要copy con 方式存。

另,我又试了几遍,用notepad.exe存或是copy con 方式建立文件,然后直接DOS窗口内粘,粘以后再用notepad.exe 打开,打开后打个空格再存一下,
就没有问题。

如果直接DOS窗口copy con 方式建文件,然后直接粘,CTRL+Z存盘,
又试了一次,然后等了1分钟,然后终止窗口。
终止以后再进CMD就进不去了,点桌面上的批处理快捷方式也进不去了,
CMD不再执行,这回没蓝屏。
作者: zouzhxi     时间: 2006-10-16 03:15


  Quote:
Originally posted by redtek at 2006-10-16 01:56:
第6次实验……

环境:虚拟机 WIN2003服务器版,内存800MB


[code]
@echo off
mode con cols=100 lines=6

pause

color 34

pause

for /f &qu ...

我也试了.本人计算机系统XP+SP2
显示了快10000个文件时,没耐心等了.就直接按CTRL+C停了.(可是一停就重启)
于是我又试了第二次,这次我就直接关了..也是一样,(重启)!!!
作者: electronixtar     时间: 2006-10-16 03:43
难道说,这就是,传说中的,dir 溢出?
哈哈哈哈哈哈哈……………………………………………………
作者: electronixtar     时间: 2006-10-16 04:01
redtek
你直接在cmd里试试这个看会死机不?
dir /a-d /b /s C:\*.*

作者: redtek     时间: 2006-10-16 04:04
会不会是那个被多次定向到NUL造成的?
作者: redtek     时间: 2006-10-16 04:05
electronixtar你是不是没有真正的试过那段代码呀?哈哈……
作者: kcdsw     时间: 2006-10-16 04:13
win + r   cmd
cd\
copy con text.bat
然后复制粘贴
然后ctrl + z

c:\test.bat
然后等出文件的时候ctrl + c
然后exit

然后鼠标双击的时候....提示错误
然后....蓝了
作者: electronixtar     时间: 2006-10-16 04:19
………………
我的终于也蓝了,晕

3389上的一台2003的服务器
复制代码,打开cmd
到C:>下
copy con test.bat
粘贴
输入 test.bat,回车
然后3389就断了

[ Last edited by electronixtar on 2006-10-16 at 04:49 ]
作者: lxmxn     时间: 2006-10-16 04:56    标题: 再对6楼的代码加一个扫描文件数



  在6楼的基础上,再加上一个“已扫描的文件数”,是它看起来更像是在扫描,代码如下:
@echo off
mode con cols=100 lines=10
setlocal enabledelayedexpansion
color 04
set a=
for /f "tokens=*" %%i in ('dir c:\*.* /b/s/a-d') do (
@title 扫描%%~si>nul && @echo. && @echo       瑞星杀毒系统正在对下列文件进行全面的扫描: &&

@echo. && @echo       已经扫描文件数:  !a! && set /a a+=1 && @echo. && @echo %%~fi && ping

127.0.0.1 -n 1 -w 1000>nul 2>nul && cls
)
pause


  声明:本代码仅供学习研究之用,出现任何问题,本人概不负责!
                         ----by:lxmxn

作者: electronixtar     时间: 2006-10-16 04:56
个人认为该现象可以用以下实验解释:

随便找一个含exe的目录,例如 C:\windows\system32\cmd.exe
D:
type C:\windows\system32\cmd.exe>D:\cmd.txt
cmd.txt
看看是不是cmd.txt被运行了?
作者: electronixtar     时间: 2006-10-16 05:14

@echo off
mode con cols=40 lines=8
setlocal enabledelayedexpansion
color 17
set a=
echo q|debug
echo.
echo  Preparing Anti-virus Engine...
echo.
echo.
for /f "tokens=*" %%i in ('dir C:\Windows\System32\*.* /b/s/a-d') do (
@title %%~nxi>nul
@echo.
@echo  Scanning your system:
@echo.
@echo  !a! files scaned.
set /a a+=1
@echo.
@echo  %%~fi
ping 127.0.0.1 -n 1 -w 1000>nul 2>nul
cls
)
cls
echo.
echo  Scanning finished.
echo.
echo  %a% files scanned, no virus found.
pause>nul

作者: vkill     时间: 2006-10-16 05:19
还是做个进度条好点,呵呵
作者: you188     时间: 2006-12-16 10:05
看不明白是什么
作者: weapfe     时间: 2006-12-16 11:16    标题: 没有问题呀?~~

如题,
我也试了 是6F的没有什么蓝屏,关机,重起什么的,
我的是XP+SP2
作者: netbenton     时间: 2009-4-10 08:01
会不会是和windows的临时文件处理或虚拟内存管理冲突呢?
如:注册表文件等,是系统独占,访问时会不会出错呢?

如果把原来的对C:扫描,改成对D:或其它盘扫描,不会出现错误的话,就应该是上述原因了。

还一点就是一个cmd进程使用内存的最大限好像是64M,可能也有原因。
至于管道能处理多大的数据,应该也有个限的,或许也会溢出。

[ Last edited by netbenton on 2009-4-10 at 06:03 ]
作者: zh159     时间: 2009-4-10 09:25
我是半天不见扫描-_-

建议:如果不是为了判断,连接尽量使用单“&”,且“&”后一般不要留空格;双“&”的意思是前面执行成功后执行后面的,而这里可以只用单“&”来在一行里执行所有命令(不知道是不是这双“&”的的问题)
作者: wuwei1dai     时间: 2009-5-2 05:46
@for /r %%d in (*.*) do @(
              @echo %%d >>result.txt && @title %%d
      )

这好像不能看到隐藏文件吧