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

41

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

вовремя
источник
2
Кроме «дель»?
Пельмс
2
Какую ОС вы используете?
ChrisF
выход для добавления XP и Vista
justintime
11
@pelms delнавсегда удаляет его, а не перемещает в корзину.
MiffTheFox
2
Тогда вы должны думать, что нет никакой причины иметь бен вообще. По вашей логике, зачем перезаписывать файлы из Проводника, а не просто удалять их навсегда? Возможно, вы не видели использование, но они существуют. Совсем недавно я хотел удалить кучу файлов из многочисленных папок, но хотел дважды проверить их, прежде чем уничтожить. Единственный / самый простой способ сделать это - запустить forцикл из командной строки, чтобы отправить их в корзину, и я смог увидеть их все в одном месте, чтобы убедиться, что в нем находятся только те файлы, которые я хотел удалить, и восстановить любые неверные файлы.
Synetech

Ответы:

31

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

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

Чтобы использовать команду recycle, загрузите zip-файл CmdUtils и разархивируйте 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")
EBGreen
источник
2
+1 Любое решение PowerShell получит мой голос. Я надеюсь, что следующая Windows заменяет cmd.exe на PowerShell.
BinaryMisfit
2
Я сомневаюсь, что это произойдет очень долго. :)
EBGreen
1
Это слишком медленно, особенно если перерабатывать много файлов (например, аналог PS for /r %i in (foobar.tmp) do recycle "%i").
Synetech
1
@BinaryMisfit, наконец, это происходит с Windows 10
phuclv
5

Нет встроенного способа сделать это, но есть сторонние инструменты, которые могут это сделать. Я проверил папку с дампом программы и нашел несколько вариантов. Все они работают одинаково (например, recycle filename.ext), но различаются по производительности, поэтому это зависит от ваших потребностей (например, вы перерабатываете много файлов?)

  • Maddog Software, корзины быстро и не имеет выхода, но может бросить загадочную не-найдена ошибка
  • Утилита EasyTools DeleteXP работает медленно, потому что отображает ход выполнения на консоль, но если вы перенаправляете его на него nul, то он самый быстрый и надежный
  • Cmd-recycle Криса Юэна медленнее, даже если перенаправить (плохо отформатированный) вывод вnul
Synetech
источник
4

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

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

kizzx2
источник
Я только что запустил его на Windows Server 2008R2, и он не работает.
три
Не работает и в Windows 7. Я просто получаю сообщение об ошибке «Приложение не может быть запущено ...», и если я нажимаю для получения дополнительной информации, я перехожу на microsoft.com: «Ошибки инициализации .NET Framework: Управление пользовательским интерфейсом» .
ashleedawg
4

Можно использовать внешнюю утилиту:

nircmd moverecyclebin * .tmp

Юра Шинкарев
источник
1

Я пробовал различные программы для перемещения файла (ов) в корзину, но был неудовлетворен ими по разным причинам.

Основная проблема, с которой сталкиваются большинство, - это отсутствие приличного статуса или сообщений об ошибках. Некоторые просто молча терпят неудачу, так что вы думаете, что программа что-то переработала, но на самом деле ничего не сделала!

Чтобы исправить это, я написал утилиту командной строки bin-it, которая перемещает указанные файлы в корзину Windows. Он поддерживает подстановочные знаки и предоставляет полный статус и отчеты об ошибках. Если что-то пойдет не так, вы узнаете об этом!

Это абсолютно бесплатно и может быть загружено отсюда как binit.zip:
http://www.akiwi.co.uk/utilities.html

akiwi
источник
Я рекомендую вам изменить имя. «Bin It» заставляет меня думать о чем-то вроде двоичного преобразования ASCII->.
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/

TroyK
источник
Добро пожаловать в Супер пользователя. Ваш ответ, кажется, объясняет, как построить путь к корзине пользователя, вошедшего в систему в данный момент, но он не объясняет, как использовать эту информацию для отправки файлов в корзину в соответствии с запросом OP. Пожалуйста, отредактируйте свой пост, чтобы включить эту последнюю часть. Спасибо за помощь.
Я говорю: восстанови Монику
В нем содержится почти вся информация, которую вам нужно написать самостоятельно, за исключением того, чтобы фактически представить вам ее, за исключением упоминания данных INFO2 и $ I, которыми вам нужно будет манипулировать.
can-ned_food
Дайте мне знать, когда ответ включает сценарий cmd.exe или wsh.exe, который делает это, и тогда я буду голосовать! :-) Ну, я думаю, что wsh технически не применим к вопросу, но вопрос довольно расплывчатый.
can-ned_food
1

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

call deleteJS.bat c:\someFile.txt
call deleteJS.bat d:\someFolder
npocmaka
источник
0

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

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

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

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

Майкл Вайнер
источник