〔批处理〕得到回收站删除的文件列表

〔批处理〕得到回收站删除的文件列表

@ECHO OFF

SETLOCAL EnableDelayedExpansion


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: 需要区别FAT32和NTFS格式下的回收站
::
:: FAT32回收站结构如下:
::
:: [Recycled]
:: desktop.ini
:: INFO2
::
:: NTFS回收站结构如下:
::
:: [Recycler]
::   [S-1-5-21-1409082233-448539723-725345543-500]
::     desktop.ini
::     INFO2
::   [S-1-5-21-1844237615-2139871995-1417001333-500]
::     desktop.ini
::     INFO2
::   [S-1-5-21-606747145-261478967-839522115-500]
::     desktop.ini
::     INFO2
::
:: 其中:
::
:: desktop.ini用来定义文件夹,告诉系统:你把存我的文件夹变成回收站的样子
::
:: INFO2用来存放当前盘符下删除的文件的原来路径,用8.3短文件名,以及与改名文件对应关系
::
:: 我们就是用的INFO2文件,将里面存放的信息通过两次查找过滤出来
::
:: 重点:
::
:: FIND.EXE ":" "C:\Recycled\INFO2" 2>NUL | FINDSTR.EXE /R "^[A-z]:[\\]" 2>NUL
::
:: 参考:
::
:: http://www.cn-dos.net/forum/viewthread.php?tid=25053&fpage=1&highlight=tokens%3D1%2B&page=1
::
:: 感谢:
::
:: 中国DOS联盟论坛里所有给予我启发的热心人!使我受益匪浅!
::
:: Author: NeedJava
::
:: Modified: 2007.08.13
::
:: BTW: 今晚23时东北方向有英仙座流星雨,我已经调好照相机了
::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DEL /F /Q deleted.txt 2>NUL

FOR %%a IN ( C D E F G H I J K L M N O P Q R S T U V Y X Y Z ) DO (

    IF EXIST "%%a:\" (

       ECHO 正在搜索〔%%a:〕盘下的回收站……

       FOR /F "delims=" %%i IN ( 'DIR /AH-D /B /S "%%a:\Recycler\INFO2" 2^>NUL' ) DO (

REM        ECHO [%%i] & PAUSE

           CALL :parse %%i

       )

       FOR /F "delims=" %%I IN ( 'DIR /AH-D /B /S "%%a:\Recycled\INFO2" 2^>NUL' ) DO (

REM        ECHO [%%I] & PAUSE

           CALL :parse %%I

       )

    )

)

@ECHO ON

GOTO :EOF


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: 重点:
::
:: FIND.EXE ":" "C:\Recycled\INFO2" 2>NUL | FINDSTR.EXE /R "^[A-z]:[\\]" 2>NUL
::
:: 详细解释请关注上面的网站,无奈何版主的叙述,呵呵,本人坐板凳听
::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:parse

ECHO [%1]>>deleted.txt

FOR /F "delims=" %%m IN ( 'FIND.EXE ":" "%1" 2^>NUL ^| FINDSTR.EXE /R "^[A-z]:[\\]" 2^>NUL' ) DO (

    ECHO %%m>>deleted.txt

)

ECHO.>>deleted.txt

 

后记,鉴于很多病毒喜欢往回收站里面钻,通过查找真正被删除的文件列表,找到对应的删除文件,那么剩下的文件可以看着办了,估计先要用IS杀掉进程

你可能感兴趣的:(〔批处理〕得到回收站删除的文件列表)