【问题标题】:CMD Command to delete files and put them into Recycle Bin?CMD命令删除文件并将它们放入回收站?
【发布时间】:2010-12-11 09:52:55
【问题描述】:

是否有任何控制台命令“del”可以从文件夹中删除文件并将它们放入回收站? del 命令将删除文件,而不是在回收站中。

【问题讨论】:

  • The same question on SuperUser 有大部分这些答案以及更多。但就像我在那里警告的那样,您应该知道大多数解决方案都可能在文件名中包含 Unicode/非拉丁字符的文件中失败,即使是支持 Unicode 的程序也是如此,因为命令行本身不适用于非拉丁语字符,有时即使您更改了代码页。 :-\

标签: batch-file cmd console


【解决方案1】:

好的,这是一个非常古老的线程,但是此解决方案具有其他答案中未解决的一些属性:

  • 它使用 PowerShell 和两个 Microsoft.VisualBasic COM 对象的静态方法,允许在不确认的情况下删除文件夹和文件(因此它可以在没有第 3 方实用程序的情况下使用,并且在无人值守的情况下运行)
  • 它允许传递通配符,因此删除多个文件时不会那么慢

将这一行粘贴到一个名为 recycle.bat 的文件中(这样您就可以轻松地从命令行调用它):

@powershell.exe -nologo -noprofile -Command "& {Add-Type -AssemblyName 'Microsoft.VisualBasic'; Get-ChildItem -Path '%~1' | ForEach-Object { if ($_ -is [System.IO.DirectoryInfo]) { [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteDirectory($_.FullName,'OnlyErrorDialogs','SendToRecycleBin') } else { [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($_.FullName,'OnlyErrorDialogs','SendToRecycleBin') } } }"

【讨论】:

    【解决方案2】:

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

    --麦克

    【讨论】:

      【解决方案3】:

      这取决于文件所在的位置(并且仅适用于文件)。它首先打开文件夹,然后模拟从键盘输入 - 选择文件,然后使用 del 键执行“删除”命令。为避免出错,脚本设置为在下一个命令之前暂停几秒钟。

      set shell = CreateObject("Shell.Application")
      shell.Open "C:\Users\server\Desktop"
      set wshShell = CreateObject("WScript.Shell")
      wscript.Sleep 200
      wshShell.SendKeys "testfile"
      wshShell.SendKeys "{DEL}"
      wscript.Sleep 100
      wshShell.SendKeys "%{F4}"
      

      我在记事本中编写了这段代码,然后用 (.vbs) 的文件扩展名保存了它。然后使用

      将它添加到我的批处理文件中
      wscript "%~dp0filename.vbs"
      

      请注意,这两个文件(.bat 和 .vbs)需要放在同一个文件夹位置,如果放在另一个目录中,请在 .bat 文件中指定(.vbs 的)位置。

      【讨论】:

      • 这不是命令提示符/可编写脚本的解决方案,而是 GUI 自动化解决方案,这并不是真正需要的。
      【解决方案4】:

      如果您安装了节点,您可以添加“trash”模块。适用于 OS X、Linux 和 Windows。

      $ npm install -g trash
      

      当您想将文件发送到回收站时,您只需输入:

      $ trash file.txt
      

      【讨论】:

      • 您建议的安装命令不起作用。相反,这有效:npm install --global trash-cli 参考:npmjs.com/package/trash
      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

        在名为 cmdutils 的集合中有一个“recycle.exe”命令部分

        "Recycle.exe 是 DEL 命令的安全替代,它将文件发送到回收站而不是删除它们。回收也比 DEL 更灵活;您可以一次指定多个文件(或使用通配符)"

        可通过http://www.maddogsw.com/cmdutils获得
        (工具上次更新时间为 2000 年 5 月)

        有一个“DeleteXP.exe”用于从 Windows(Windows 9x 和 Windows NT 4.0/2000/XP)的命令提示符中删除文件。与仅删除文件的标准“DEL”命令不同,Delete XP 删除文件并将它们发送到回收站。要删除的文件作为参数传递给它。它现在支持 /p 并添加了两个新选项 /a /d /v。

        就像 Windows NT/2000/XP 中的“del”命令一样,即使在 Windows 9x 中,Delete XP 也支持多个文件名作为参数。

        可通过http://downloads.easytools.com/Freebies/DeleteXP.zip获得
        (工具上次更新时间为 2004 年 9 月)

        有“recycle.exe”(来自maddogsw的不同开发者):

        C:\>recycle /?
        Version 1.11, Copyright (C)2001 Frank P. Westlake
        Deletes one or more files by sending them to the Recycle Bin, if possible.
        
        RECYCLE [/PFQ] [/A[[:]attributes]] [[drive:][path]filename
        
        [drive:][path]filename
        Specifies the file(s) to delete. Specify multiple files by using wildcards.
        /P Prompts for confirmation before deleting each file.
        /F Force deleting of read-only files.
        /Q Quiet mode, do not ask if ok to delete on global wildcard
        /A Selects files to delete based on attributes
            attributes R Read-only files 
            S System files
            H Hidden files 
            A Files ready for archiving
            - Prefix meaning not
        

        联系方式:http://web.archive.org/web/20071026113307/http://gearbox.maem.umr.edu/batch/f_w_util/
        http://gearbox.maem.umr.edu/batch/f_w_util/
        http://gearbox.maem.umr.edu/batch/f_w_util/recycle.zip
        (工具上次更新时间为 2001 年 1 月)

        顺便说一句,如果你想从命令行清空回收站“cmdutils”有“bin”命令:

        bin /empty /force
        

        【讨论】:

        • del 命令的信息不正确 - 您可以删除多个文件并使用通配符与del
        • 不是真的,有一段时间它不支持通配符。
        【解决方案7】:

        所有答案都建议使用第三方工具,但您可以使用简单的move,您只需要确定正确的回收站路径即可。

        在 XP 中是 C:\RECYCLER,在 Vista 和更高版本中是 C:\$Recycle.bin。然而,这还不是全部,它只是一个主文件夹,但它包含子文件夹,这些是您需要移动文件的实际 bin。

        例如,在我的机器中,路径是:

        c:\$Recycle.Bin\S-1-5-21-1291211594-1566655150-3201569215-1000

        【讨论】:

        • 如果你这样做并在 Windows 资源管理器的文件夹列表中查看“回收站”它不会在文件名列表中显示移动的文件名(在我的Win XP 系统),即使它位于 C:\RECYCLER\ 文件夹中。 “清空回收站”选项不会删除使用此方法完成的文件。但是,您可以在 Windows 资源管理器中打开“C:\RECYLER\”,然后“Emptyi 回收站”DOES 会删除该文件夹中的该文件。
        • 手动将文件移动到回收站文件夹是一个坏主意。回收站不仅仅是一个简单的文件夹,它还是一个系统外壳文件夹,在INFO 文件中维护着已删除文件的列表。如果您手动将文件放入其中,bin 将看不到它们,您将无法恢复它们。
        • 但是您可以手动恢复它们,就像您手动将它们移到那里一样,对吧?
        • @FabianRöling,也许,也许不是。这取决于哪些程序对它做了什么。无论哪种方式,您都不应该手动弄乱它。
        • 我之前的评论是 2.5 年前,从那以后我切换到 Linux。具有讽刺意味的是,我最近在那里实现了一个自定义垃圾箱功能,但如果存在名称冲突,它实际上会正确重命名文件并创建恢复所需的.trashinfo 文件。
        【解决方案8】:

        recycle.exe -f apple.jpg 来自http://www.maddogsw.com/cmdutils/ 仍然有效。

        2014 年 3 月,Windows7 x64,限制 UAC 帐户权限顺便说一句。 还使用一些变音文件名进行了测试。 文件确实显示在回收站中,并且具有正确的恢复路径。

        【讨论】:

          【解决方案9】:

          发出copydel 的bat 脚本将是一个简单的解决方案...

          【讨论】:

          • 我真的很想知道,你怎么能用delcopy做到这一点,解决方案是move,见here
          • 这可能意味着设置您自己的“回收”文件夹并使用 cmd 文件将文件移动到该文件夹​​。将日期戳附加到要移动的文件名将相当容易。您需要像 Windows 回收站一样定期手动“清空”此文件夹。
          • 希望这意味着设置一个假回收站,因为实际回收站中的文件被命名为例如C:\$Recycle.Bin\S-1-5-21-983910293-0978783143-9801237884-1001\$RIUIFOK。将文件随机复制/移动到 Windows 的目录结构中似乎是不明智的。此外,它无法知道删除日期或原始位置。编辑:stackoverflow.com/questions/1646425/… 指出通过移动/复制“引入”到回收站目录结构中的文件根本不会显示在 Windows 资源管理器的回收站中。
          • 此外,回收站不是普通的目录,它包含一个内容数据库。手动放入其中意味着您将无法从回收站文件夹中查看/恢复/清除它们。
          【解决方案10】:

          【讨论】:

          • 好的。看起来没有可以在批处理代码中使用的内置命令。
          猜你喜欢
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 2013-12-21
          • 1970-01-01
          • 2018-02-20
          • 2018-03-03
          • 2010-11-18
          • 1970-01-01
          相关资源
          最近更新 更多