Command line 在回收站中列出文件

Command line 在回收站中列出文件,command-line,windows-vista,cmd,recycle-bin,Command Line,Windows Vista,Cmd,Recycle Bin,我想从命令行列出Vista中回收站中的文件。到目前为止,我有: dir C:\$Recycle.Bin /s /b >> recyclebin.txt 这工作正常,我得到的输出是: C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$I2H8K48.zip C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$IE94UAG.exe C:\$

我想从命令行列出Vista中回收站中的文件。到目前为止,我有:

dir C:\$Recycle.Bin /s /b >> recyclebin.txt
这工作正常,我得到的输出是:

C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$I2H8K48.zip
C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$IE94UAG.exe
C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$IR4P99W.rar
C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$R2H8K48.zip
C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$RE94UAG.exe
C:\$Recycle.bin\S-1-5-21-931442927-344369455-2477061601-1000\$RR4P99W.rar

我的回收站中只有3个文件,分别是
auto-it-v3-setup.exe
fcleanerportable.rar
Reinstall.rar

有没有办法把这些名字放到
.txt
文件列表中,而不是上面那些代码名文件中?

我找到了这个脚本。 并从批处理文件中使用此命令调用它

cscript recyclebin.vbs >> "logs\recyclebin.txt"

将以下内容另存为
recyclebin.vbs

选项显式
Dim g_objWshShell、g_objFSO、g_sLogFile、g_objWshNetwork、g_sScriptName、g_scoputername、g_sUserName
Dim g_sVer、g_objLogFile、g_sLogDir
'设置主要变量和对象
设置g_objWshShell=WScript.CreateObject(“WScript.Shell”)'创建一个Shell对象
设置g_objFSO=CreateObject(“Scripting.FileSystemObject”)'创建一个文件系统对象
设置g_objWshNetwork=WScript.CreateObject(“WScript.Network”)'创建网络对象
g_sComputerName=g_objWshNetwork.Computername'获取计算机名
g_sUserName=g_objWshNetwork.UserName'登录用户名
g_sScriptName=UCase(WScript.ScriptName)***脚本的名称
'***启动日志文件信息-使用下面的删除或附加信息;不要两者都用***
常量FORREADING=1,FORWRITING=2,FORAPPENDING=8'用于写入、追加等的设置常量
g_sLogDir=“C:\TEMP”
如果不是(g_objFSO.FolderExists(g_sLogDir)),那么
g_objFSO.CreateFolder(g_sLogDir)
如果结束
g_sLogFile=g_sLogDir&“\”左(g_sScriptName,Len(g_sScriptName)-3)和“LOG”使日志文件成为SCRIPTNAME.LOG
g_sVer=“1.0”
'删除日志文件并在每次运行脚本时创建新日志文件
如果g_objFSO.file存在(g_sLogFile),那么
g_objFSO.DeleteFile(g_sLogFile)'删除日志文件(如果存在)。
如果结束
设置g_objLogFile=g_objFSO.CreateTextFile(g_sLogFile,用于写入)'设置日志文件以进行写入
调用Main()
调用ExitScript()
'在此处启动主脚本***
副标题()
Dim objRecycleBin、objFolderItems、objItem、strSpecialFolderName
strSpecialFolderName=“回收站”
'调用WriteLine(“开始”&g_sScriptName&“在”&Date&&Time,g_objLogFile)
设置objRecycleBin=GetSpecialFolderObject(strSpecialFolderName)'根据输入名称获取特殊文件夹
设置objFolderItems=objRecycleBin.Items()'获取回收站中的项目
对于objFolderItems中的每个objItem,删除特殊文件夹中的所有项目
如果是(objItem.Type=“文件文件夹”),则“检查文件类型”
g_objFSO.DeleteFolder(objItem.Path)'删除文件夹
其他的
g_objFSO.DeleteFile(objItem.Path)'删除文件
如果结束
WScript.Echo“已删除”&objItem.Name
下一个
端接头
'*-*-*-*-*-*-在此处启动子例程*-*-*-*-*-
'根据文件夹名称返回SpecialFolder
函数GetSpecialFolderObject(NameOffFolder)
Dim objShellApp,i,OBJSSpecialFolder
设置objShellApp=CreateObject(“Shell.Application”)
出错时继续下一步
对于i=0到40,40'是特殊文件夹的最高值
设置objsspecialfolder=objShellApp.NameSpace(i)
如果(StrComp(objSpecialFolder.Title,NameOfFolder,vbTextCompare)=0),则
设置GetSpecialFolderObject=objSpecialFolder
退出
如果结束
下一个
呃,明白了
端函数
'关闭日志文件并退出脚本
次级出口指令()
'调用写入线(日期和时间和完成日期和g_sScriptName,g_objLogFile)
如果是IsObject(g_objLogFile),则
g_objLogFile.Close
如果结束
Wscript.Quit
端接头
子内错误(错误字符串)
WScript.Echo-sErrorString&vbCrLf&“检查”&Chr(34)&g_sLogFile&Chr(34)&“查看详细信息”
调用WriteLine(sErrorString,g_objLogFile)
WScript.Quit()
端接头
'显示输入错误时的用法
子用途()
WScript.Echo g_sScriptName&“v”和g_sVer&“清空登录用户的回收站”&vbCrLf_
&vbCrLf&“用法:[CSCRIPT]”&g_-sScriptName
WScript.Quit
端接头
'写入日志
子写入线(ByVal strMessage、ByVal objFile)
出错时继续下一步
如果是IsObject(objFile),则“objFile”应为文件对象
objFile.WriteLine标准消息
其他的
调用Wscript.Echo(strMessage)
如果结束
端接头

要使用PowerShell按原始位置列出回收站中的文件(另存为file.ps1,请在|之前删除换行符,以便只获得两行):


这个答案,如果它是主要的,应该有一个大红色警告:建议的脚本代码不列出文件,它会删除它们!
(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()
|select @{n="OriginalLocation";e={$_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2")}},Name
| export-csv -delimiter "\" -path C:\Users\UserName\Desktop\recycleBinFiles.txt -NoTypeInformation

(gc C:\Users\UserName\Desktop\recycleBinFiles.txt | select -Skip 1)
| % {$_.Replace('"','')}
| set-content C:\Users\UserName\Desktop\recycleBinFiles.txt