将文件发送到回收站的命令行方式是什么?


41

是否有一个命令行程序可以将文件发送到回收站?这是在XP和Vista上。


2
除了“ del”以外?
pelms

2
您正在使用哪个操作系统?
克里斯·弗里德(ChrisF)2009年

退出以添加XP和Vista
justintime

11
@pelms del将其永久删除,而不是将其移动到回收站。
MiffTheFox

2
然后,您必须认为根本没有理由拥有Bin。按照您的逻辑,为什么要从资源管理器中回收文件,而不仅仅是永久删除文件?您可能没有看到用处,但它们确实存在。就在最近,我想从众多文件夹中删除一堆文件,但想在清除文件之前先对其进行仔细检查。唯一/最简单的方法是for从命令提示符运行循环以将它们发送到垃圾箱,然后我可以将它们全部合并到一个位置,以确保只有我要删除的文件位于其中,并且恢复所有不正确的文件。
Synetech 2012年

Answers:


31

CmdUtils有一个名为的实用程序Recycle,可以完成此任务。[ 直接下载 ]

更多信息

要使用回收命令,请下载CmdUtils zip文件,然后将exe解压缩到Windows文件夹中。将它们添加到Windows文件夹将使您可以全局访问命令,而不必指定可执行文件的完整路径。然后,您可以输入以下命令开始使用recycle命令:

recycle filename.txt

您还可以使用命令指定通配符,因此输入recycle * .txt将回收当前目录中的所有文本文件。还可以通过在命令中使用强制标志来禁止删除确认对话框。

要删除文件而不必确认是使用命令

recycle –f filename.txt

-f标志将告诉命令强制循环,而不会显示确认对话框。


19

如果您安装了Powershell:

$sh = new-object -comobject "Shell.Application"
$ns = $sh.Namespace(0).ParseName("PATH\TO\FILE\TO\DELETE")
$ns.InvokeVerb("delete")

2
+1任何Powershell解决方案都将赢得我的投票。我希望下一个Windows用PowerShell替换cmd.exe。
BinaryMisfit

2
我怀疑这种情况会持续很长时间。:)
EBGreen

1
这太慢了,尤其是在回收大量文件(例如与PS对应的文件for /r %i in (foobar.tmp) do recycle "%i")的情况下。
Synetech

1
@BinaryMisfit最终在Windows 10中发生
phuclv

4

我已经问了很长时间了-我终于把事情交给了我,我自己开发了实用程序cmd-recycle

Recycle.exe在CmdUtils中进行了查看。关于它的问题是,在回收时它会弹出传统的“您确定”对话框(可以通过添加-f参数将其删除)。我的程序只是这样做(因为您总是可以撤消),所以我认为它更适合脚本编写目的。


我只是在Windows Server 2008R2上运行了它,所以它不起作用。
2016年

在Windows 7上也不起作用。我只是得到一个错误“该应用程序无法启动...”,如果单击以获取更多信息,我将被带到microsoft.com:“.NET Framework初始化错误:管理用户体验”
ashleedawg

4

没有内置的方法可以执行此操作,但是可以使用第三方工具。我检查了我的程序转储文件夹,发现了一些选择。它们的工作方式都相同(例如recycle filename.ext),但是它们的性能有所不同,所以这取决于您的需求(例如,您是否回收了很多文件?)

  • MaDdoG软件的Recycle速度很快,没有输出,但是会引发神秘的未发现错误
  • EasyTools' DeleteXP是缓慢的,因为它会显示进度,到控制台,但如果你把它重定向到nul,那么它是最快的,可靠的
  • Chris Yuen的cmd-recycle最慢,即使将(格式不正确的)输出重定向到nul


1

我尝试了各种程序将文件移动到回收站,但是由于各种原因,他们对此感到不满意。

最主要的问题是缺少体面的状态或错误消息。有些只是默默地失败,所以您认为该程序回收了一些东西,但实际上什么也没做!

为了解决这个问题,我编写了一个名为bin-it的命令行实用程序,该实用程序将指定的文件移动到Windows回收站。它支持通配符,并提供完整的状态和错误报告。如果出现问题,您会知道的!

它是完全免费的,可以从此处作为binit.zip下载:http ://www.akiwi.co.uk/utilities.html


我建议您更改名称。“ Bin It”让我想到了类似ASCII-> binary转换的东西。
can-ned_food

1

如果不使用第三方工具,我相信不会存在“将文件发送到回收站的命令行方式”。您可以在Windows 7-10系统上获得回收站的完整路径,如下所示:

::get current user sid
for /f "tokens=2" %%i in ('whoami /user /NH') do set UID=%%i
:: create full path to current user recycle bin in a variable
set recyclebin=%systemdrive%\$Recycle.Bin\%UID%

echo %recyclebin%

问题在于,如果仅将文件移动到其中,则该文件不会出现在回收站中。您将只能在命令提示符下看到它。回收站是一个特殊的文件夹。Windows API将项目移到回收站的方法会重命名该文件,并将有关它的信息存储在一个或多个专有信息文件中,具体取决于操作系统的版本。上面答案中建议的第三方工具将调用这些API方法来为您处理所有这些方法。

此处提供更多信息:https//dereknewton.com/2010/06/recycle-bin-forensics-in-windows-7-and-vista/


欢迎来到超级用户。您的答案似乎说明了如何建立当前登录用户的回收站的路径,但似乎没有说明如何根据OP的要求使用此信息将文件发送到回收站。请编辑您的帖子以包含最后一部分。感谢您的贡献。
我说恢复莫妮卡的时间

除了提到您需要操纵的INFO2和$ I数据之外,这几乎包含您编写自己所需的所有信息,除了实际为您提供一个信息之外。
can-ned_food

让我知道答案中是否包含cmd.exe或wsh.exe脚本,然后我将进行投票!:-)好吧,我想wsh从技术上讲不适用于此问题,但问题相当模糊。
can-ned_food

1

没有外部程序- deleteJS.bat。它使用Shell.Applicationinvoke动词方法。用法很简单:

call deleteJS.bat c:\someFile.txt
call deleteJS.bat d:\someFolder

0

您可以尝试RecycleIt。它将通过命令行将文件发送到Windows回收站。

用法示例:

recycleIt.exe C:\temp\example.txt /quit

注意:您需要添加“ / quit”,否则它将弹出一个保持打开状态的窗口。对于无头控制台会话可能会出现问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.