Как командная строка отправляет файлы в корзину?

20723
justintime

Есть ли программа командной строки, которая может отправлять файлы в корзину? Это на XP и Vista.

35
Кроме «дель»? pelms 15 лет назад 2
Какую ОС вы используете? ChrisF 15 лет назад 2
выход, чтобы добавить XP и Vista justintime 15 лет назад 0
@pelms `del` навсегда удаляет его, а не перемещает в корзину. MiffTheFox 15 лет назад 11
Почему вы хотите переместить их в корзину? Если мы сможем понять ваше мышление, возможно, найдется лучший способ. EvilChookie 15 лет назад 0
@ EvilChookie, что? Вы спрашиваете, почему корзина существует вообще? Потому что иногда вы хотите удалить файл с возможностью его восстановления. Нет разницы, делаете ли вы это из Проводника или из командной строки. Synetech 12 лет назад 0
@Synetech: Нет, это не то, что я спрашивал. Я был озадачен тем, почему вы захотите переместить большие командные файлы (поскольку он делает это через cmd) в корзину - почему бы просто не переместить их во временное расположение? Корзина не предназначена для хранения файлов или контроля версий. У меня было много плохого опыта с пользователями, которые чувствовали это (о, я могу просто восстановить это позже), только чтобы забыть, что там, и стереть все это. Это все равно, что положить факс в мусорное ведро и вытащить его, если вам это нужно. Почему бы не положить его в безопасное место, пока не узнаешь, что можешь выбросить его? EvilChookie 12 лет назад 0
Тогда вы должны думать, что нет никакой причины иметь Бин вообще. По вашей логике, зачем перезаписывать файлы из Проводника, а не просто удалять их навсегда? Возможно, вы не видели использование, но они существуют. Совсем недавно я хотел удалить кучу файлов из многочисленных папок, но хотел еще раз проверить их, прежде чем уничтожить. Единственный / самый простой способ сделать это - запустить цикл `for` из командной строки, чтобы отправить их в корзину, и я смог увидеть их все в одном месте, чтобы убедиться, что только те файлы, которые я хотел удалить, были там и восстановить любые неправильные файлы. Synetech 12 лет назад 1

9 ответов на вопрос

29
Mark

В CmdUtils есть утилита, Recycleкоторая делает именно это. [ прямая загрузка ]

Больше информации :

Чтобы использовать команду recycle, загрузите zip-файл CmdUtils и разархивируйте exe-файл в папку Windows. Добавление их в папку Windows позволит вам получить глобальный доступ к команде без необходимости указывать полный путь к исполняемому файлу. Затем вы можете начать использовать команду recycle, набрав;

recycle filename.txt 

Вы также можете указать подстановочные знаки с помощью команд, поэтому при вводе recycle * .txt будут перезаписаны любые текстовые файлы в текущем каталоге. Существует также опция для подавления диалогового окна подтверждения удаления, используя флаг Force с командой.

Чтобы удалить файл без подтверждения, используйте команду

recycle –f filename.txt 

Флаг –f сообщит команде о необходимости перезагрузки без отображения диалогового окна подтверждения.

17
EBGreen

Если у вас установлен PowerShell:

$sh = new-object -comobject "Shell.Application" $ns = $sh.Namespace(0).ParseName("PATH\TO\FILE\TO\DELETE") $ns.InvokeVerb("delete") 
+1 Любое решение PowerShell получит мой голос. Я надеюсь, что следующая Windows заменяет cmd.exe на PowerShell. BinaryMisfit 15 лет назад 2
Я сомневаюсь, что это произойдет очень долго. :) EBGreen 15 лет назад 1
Это слишком медленно, особенно если перерабатывать много файлов (например, аналог PS для `for / r% i в (foobar.tmp) действительно перерабатывает"% i "`). Synetech 12 лет назад 1
@BinaryMisfit наконец то, что происходит с Windows 10 phuclv 7 лет назад 1
5
kizzx2

У меня был этот вопрос в течение долгого времени - я наконец взял все в свои руки и развернул свою собственную утилиту cmd-recycle

Я посмотрел Recycle.exeв CmdUtils. Дело в том, что при перезапуске он открывает традиционный диалог «Вы уверены» (который можно удалить, добавив аргумент -f). Моя программа просто делает это (поскольку вы всегда можете отменить), что, я думаю, больше подходит для сценариев.

Я только что запустил его на Windows Server 2008R2, и он не работает. dthree 8 лет назад 0
4
Synetech

There is no built-in way to do this, but there are third-party tools that can. I checked my program-dump folder and found a few options. They all work the same (e.g., recycle filename.ext), but they vary in performance, so it depends on what your needs are (e.g., are you recycling a lot of files?)

  • MaDdoG Software’s Recycle is fast and has no output, but can throw a mysterious not-found error
  • EasyTools’ DeleteXP is slow because it displays the progress to the console, but if you redirect it to nul, then it is the fastest and reliable
  • Chris Yuen’s cmd-recycle is slowest, even when redirecting the (poorly formatted) output to nul
3
Yura Shinkarev

Can use external utility:

nircmd moverecyclebin *.tmp

1
akiwi

I tried various programs for moving a file(s) to the recycle bin, but was unsatisfied with them for various reasons.

The main problem most have is the lack of decent status or error messages. Some just fail silently, so you think the program recycled something but in fact didn't do anything at all!

To remedy this, I've written a command line utility called bin-it that moves the specified file(s) to the Windows recycle bin. It supports wildcards and provides full status and error reporting. If something goes wrong, you'll know about it!

It's completely free and can be downloaded from here as binit.zip:
http://www.akiwi.co.uk/utilities.html

Я рекомендую вам изменить имя. «Bin It» заставляет меня думать о чем-то вроде ASCII-> двоичного преобразования. can-ned_food 6 лет назад 0
1
TroyK

Без использования сторонних инструментов я не верю, что существует «способ командной строки для отправки файлов в корзину». Вы можете получить полный путь к корзине в системе 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. Пожалуйста, отредактируйте свой пост, чтобы включить эту последнюю часть. Спасибо за помощь. Twisty Impersonator 7 лет назад 0
В нем содержится почти вся информация, которую вам нужно написать самостоятельно, за исключением того, чтобы фактически представить ее вам, за исключением упоминания данных INFO2 и $ I, которыми вам нужно будет манипулировать. can-ned_food 6 лет назад 0
Дайте мне знать, когда ответ включает сценарий cmd.exe или wsh.exe, который делает это, и тогда я буду голосовать! :-) Ну, я думаю, что wsh технически не применим к вопросу, но вопрос довольно расплывчатый. can-ned_food 6 лет назад 0
1
npocmaka

Без внешних программ deleteJS.bat. Он использует Shell.Applicationметод вызова глагола. использование простое:

call deleteJS.bat c:\someFile.txt call deleteJS.bat d:\someFolder 
0
Michael Weiner

Вы можете попробовать RecycleIt . Он будет отправлять файлы в корзину Windows через командную строку.

ПРИМЕР ИСПОЛЬЗОВАНИЯ:

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

ПРИМЕЧАНИЕ. Вам нужно добавить «/ quit», иначе появится всплывающее окно. Это может быть проблематично для безголовых консольных сессий.