Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Windows

Как удалить файл из командной строки в Корзину? : Windows

23.11.2024 3:03


20.02.2019 09:27
Как можно удалить файл в Windows из командной строки в Корзину штатными средствами?
20.02.2019 10:42
Цитата:
OlegON из командной строки в Корзину
в свое время тоже интересовался - ничего кроме сторонних программ не нашел, единственно что было более менее штатное это только какой то скрипт с гитхаба :(
20.02.2019 10:56
Через cmd как не было ничего, так вроде и нету.
"Штатное" средство - работать через объект шелл в vbs или powershell.
20.02.2019 12:13
Ну, собственно - вот это работает :)
Код:
>move C:\2\test.txt C:\recycler\S-1-5-21-789336058-602609370-5159678
99-1004
Файл туда переносится.
Только вот в корзине, которая на Рабочем столе - не отображается.
20.02.2019 12:33
Конечно работает. Но это ж кривой костыль. Корзина не знает откуда этот файл в ней. И подкаталог юзера в cmd автоматом не очень определишь.
20.02.2019 13:04
а на VBS готовый рецепт ни у кого не завалялся? гугл уже поверил, что мне винда не нужна и ничего путного не даёт...
20.02.2019 13:50
Цитата:
OlegON готовый рецепт ни у кого не завалялся
только ссылка на гитхаб
сам скрипт не проверял (по крайней мере не помню точно), но ссыль прикопал :)
20.02.2019 14:34
Кратко оно примерно такое:
Код:
CreateObject("Shell.Application").Namespace(10).MoveHere(file)
На cyberforum ru тема "Удаление файлов и папок в корзину" - прикольный гибрид cmd и vbs, работу не проверял.
Код:
'2>nul&cls&pushd "%~dp0"&@cscript /nologo /e:vbscript "%~f0" %*&exit/b
set shell = CreateObject("Shell.Application")
set recycle = shell.Namespace(10)
Set args = WScript.Arguments
For i = 0 to args.Count - 1 
     file = args(i)
     recycle.MoveHere(file)
Next
20.02.2019 21:01
Вот еще один вариант для VBS, работает... Только показывает анимацию удаления. Примеры выше, к сожалению, уже не достал, попробую позже.

Код:
Function vFn_File_Recycle (vFilePath)
'Sends the file 'vFilePath' to the recycle bin without any delete confirmation. Returns 0 for no
'error, else returns the Err.Number.
'---------------------------------------------------------------------------------------------------
  On Error Resume Next
  'VERIFY FILE EXISTS
    Set f_ObjFSO = CreateObject("Scripting.FileSystemObject")
      If Not f_ObjFSO.FileExists(vFilePath) Then vExists = 0 Else vExists = 1
  'CONTINUE IF FILE EXISTS
    If vExists = 1 Then
    'BACKUP CURRENT USER RECYCLE BIN SETTINGS
      Set f_ObjReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") 
        f_ObjReg.GetBinaryValue &H80000001, "Software\Microsoft\Windows\CurrentVersion\Explorer", "ShellState", vStateArr
        vBackupState = vStateArr
        vStateArr(4) = 39
        f_ObjReg.SetBinaryValue &H80000001, "Software\Microsoft\Windows\CurrentVersion\Explorer", "ShellState", vStateArr
    'INVOTE SHELL APPLICATION DELETE COMMAND
      Set f_ObjShell = CreateObject("Shell.Application").NameSpace(0).ParseName(vFilePath).InvokeVerb("delete")
    'RESTORE USER RECYCLE BIN SETTINGS
        f_ObjReg.SetBinaryValue &H80000001, "Software\Microsoft\Windows\CurrentVersion\Explorer", "ShellState", vBackupState
      End If
  'CHECK FOR ERRORS AND CLOSE THE FUNCTION
    If Err.Number <> 0 Then vFn_File_Recycle = 0 Else vFn_File_Recycle = Err.Number
    On Error Goto 0
  End Function
21.02.2019 09:27
вот, на базе скрипта от vdm, работает, для копипасты

Код:
Function vFn_File_Recycle (vFilePath)
set shell = CreateObject("Shell.Application")
set recycle = shell.Namespace(10)
recycle.MoveHere(vFilePath)
End Function
Часовой пояс GMT +3, время: 03:03.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.