С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/88: Рейтинг темы: голосов - 88, средняя оценка - 4.88
8 / 8 / 2
Регистрация: 03.02.2012
Сообщений: 308

Удаление файлов и папок в корзину

06.12.2016, 21:39. Показов 17055. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Подскажите как переместить файлы и папки из папки Х в корзину посредством командной строки. Хочу написать батник выполняющий эту операцию. Возможно ли это средствами CMD или необходимы дополнительные утилиты? Тогда подскажите какие, плиз.

Добавлено через 13 минут
Удаленные файлы чтоб можно было восстановить из корзины.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2016, 21:39
Ответы с готовыми решениями:

Удаление файлов в корзину
Доброго времени суток. Требуется сделать удаление файлов в корзину. Сделал все как представлено тут:...

Удаление файлов и папок
В общем такая проблема... есть батник @echo off set "d=F:\Clean" set "d1=IT" set "d2=All" set "f1=KVRT.exe" set...

Удаление папок и файлов
Доброго времени суток! Проблема заключается в следующем, на сервере при перезагрузке нужно автоматизировать очистку переменки, временных...

17
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.12.2016, 02:01
Oleg_cyber,
Это и не на cmd непросто.
"C:\RECYCLER\{SID_пользователя}" в WinXP, "C:\$Recycle.Bin\{SID_пользователя}" в Win7 и это только для диска С, а для каждого диска своя корзина и файл с конретного диска переносится в свою корзину, но и это еще не все, он ко всему прочему еще и определенным образом переименовывается. Поместив командно мы не увидим его в корзине.
Так что проще поступить таким образом. Если хотите от bat поведения, примерного как при обычной работе, создайте в укромном (или не очень) месте папочку "А ля мусоросборник" и с помощью move помещаете хламье туда, а какой-то отдельный батничек с командой:
Windows Batch file
1
cd /d "Мусорка" && rd /s /q "Мусорка" 2>nul
когда уже завоняется конкретно
1
8 / 8 / 2
Регистрация: 03.02.2012
Сообщений: 308
07.12.2016, 09:22  [ТС]
Спасибо, попробую.
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,828
07.12.2016, 09:48
берёшь слово SHFileOperation,
присовокупляешь к нему recycle bin и с данным набором
осуществляешь trip по мировой паутине. Начать можно с ветки Win32 API C++ данного форума.
если найдётся адекватное решение с powershell - наилучший вариант.

Добавлено через 12 минут
самое короткое:
PowerShell
1
2
3
4
$shell = new-object -comobject "Shell.Application"
$folder = $shell.Namespace("<path to file>")
$item = $folder.ParseName("<name of file>")
$item.InvokeVerb("delete")
насколько я понимаю, здесь должно появится стандартное окошко с анимацией при перемещении файла в корзину.
0
8 / 8 / 2
Регистрация: 03.02.2012
Сообщений: 308
07.12.2016, 11:10  [ТС]
volodin661, сейчас попробую на своём компе...

Добавлено через 1 час 6 минут
Увы не катит. В Powershell честно говоря я мало понимаю, а изучать этот язык ради написания одного команд лета не с руки... Вариант с "мусорной" папкой лучше.
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,828
07.12.2016, 11:30
Цитата Сообщение от Oleg_cyber Посмотреть сообщение
1) Увы не катит. 2) В Powershell честно говоря я мало понимаю, а 3) изучать этот язык ради написания одного команд лета не с руки... 4) Вариант с "мусорной" папкой лучше.
1) катит
2) есть оболочки/"программные технологии", в которых ты много понимаешь?
3) Это базовый бурно развивающийся shell от Microsoft, другого пока нет; изучать что либо или нет - зависит от задач, которые потребуется решать
4) Это не вариант, если посмотреть на название топика, это просто копирование в другую папку.
И если это то, что тебе требуется, то название папки должно быть короткое латинское + атрибут Hidden.
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
07.12.2016, 12:11
Oleg_cyber, а где Вы здесь вообще узрели командлет? Командлеты пишутся, как правило, на высокоуровневых языках вроде C#/VB.NET/F# и иже с ними; то, что пишется на языке самого PS, является функцией. Последние, начиная с PS v2функционально близки командлетам, но таковыми не являются. В остальном не могу не согласиться с volodin661, за исключением локалезависимости предложенного им варианта. Идеологически правильным была бы следующая команда:
PowerShell
1
(New-Object -ComObject Shell.Application).NameSpace(0xA).MoveHere((Get-Item [файл|папка]).FullName)
Метод MoveHere определенный для RecycleBin принимает два параметра, первый из которых полный путь до файла или папки. В принципе пример можно переписать на WSH, сгибридив с CMD.
0
8 / 8 / 2
Регистрация: 03.02.2012
Сообщений: 308
07.12.2016, 12:20  [ТС]
Учту.
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,828
07.12.2016, 12:54
greg zakharov, это какая локалезависимость, неужто "delete" ?

( сие решение просто скопипастил, как и предлагал сам в начале )
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.12.2016, 13:34
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

Oleg_cyber,
Перетаскиваешь на иконку батника (не запуская его) любое кол-во файлов - и они удаляются в корзину.

Visual Basic
1
2
3
4
5
6
7
8
'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
Код сохранить с расширением .bat
3
8 / 8 / 2
Регистрация: 03.02.2012
Сообщений: 308
07.12.2016, 15:42  [ТС]
Перетаскиваешь на иконку батника (не запуская его) любое кол-во файлов - и они удаляются в корзину.
Код реально работает! Спасибо А как бы "допилить" его до батника, очищающего определенную папку? Конкретно мне нужно очищать содержимое папки D:\Загрузки
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.12.2016, 16:49
Лучший ответ Сообщение было отмечено Oleg_cyber как решение

Решение

Oleg_cyber,
Чтобы допилить ТЗ должно быть более конкретным:
1) откуда вы собираетесь запускать батник
2) как вы собираетесь передавать путь к папке:
а) через указание в переменной внутри кода
б) через cmd - передачей аргумента
в) иным способом
2) а нужен ли вообще батник, так как vbs можно и так запускать
и т.д.

Добавлено через 1 час 0 минут
Вариант с указанием папки для очистки в переменной:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'2>nul&cls&@cscript /nologo /e:vbscript "%~f0" %*&exit/b
root = "d:\загрузки"
set shell = CreateObject("Shell.Application")
set fso = CreateObject("Scripting.FileSystemObject")
set recycle = shell.Namespace(10)
set rootFolder = fso.GetFolder(root)
 
For Each file in rootFolder.Files
    recycle.MoveHere(file.Path)
Next
 
For Each folder in rootFolder.SubFolders
    recycle.MoveHere(folder.Path)
Next
0
8 / 8 / 2
Регистрация: 03.02.2012
Сообщений: 308
07.12.2016, 18:07  [ТС]
1. Из проводника.
2. Внутри кода.
3. Может быть, вы в кодах лучше рулите.
4. Thanks.

Добавлено через 21 минуту
Что-то у меня из папки Загрузки ничего не удаляется

Добавлено через 2 минуты
Может быть я туплю, но где в вашем коде прописывается значение переменной Path?

Добавлено через 13 минут
Ах да, понятно..недоразумение вышло

Добавлено через 22 минуты
Недоразумение вышло..сохранял не в той кодировке. Сейчас всё работает ОК. Респект
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.12.2016, 18:44
Цитата Сообщение от greg zakharov Посмотреть сообщение
за исключением локалезависимости предложенного им варианта.
На сколько я помню метод InvokeVerb исполняет локале-независимый глагол (всегда на англ.).

Не по теме:


Вот шпаргалка из давних записей:


Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
'1) Способ 1 - здесь нужно использовать глаголы на английском
objFolderItem.InvokeVerb ("Copy")
 
'2) Способ 2 - здесь нужно использовать глаголы согласно системным настройкам языка
For Each objFIV In objFolderItem.Verbs()
    If objFIV.Name = "&Копировать" Then '&Открыть
        objFIV.DoIt
        Exit For
    End If
Next
Полный код (для теста): копирование объекта ярлыка (и не только) в буфер обмена:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
'15 минут проморочился, почему выдает ошибку, что не найден объект "ярлык"
'оказывается есть Public\Desktop, а есть User\Desktop и оба отображаются на одном столе
Path_dpnx = "c:\users\Public\desktop\Resident Evil Revelations.lnk" 'тестирую ярлык
'Path_dpnx = "c:\users\alex\desktop\RemDrive.cmd - ярлык.lnk"
'Path_dpnx = "c:\VoiceSpy\reports\29.05.2013" 'тестирую папку
'Path_dpnx = "c:\VoiceSpy\reports\29.05.2013\29.05.2013_22_58_31.jpg" 'тестирую файл
'Path_dpnx = "c:" 'тестирую корень
 
'Чтобы получить путь к объекту через аргументы или меню Shell:SendTo
'Раскомментируйте нижнюю строку:
'if WScript.Arguments.Count > 0 then Path_dpnx = WScript.Arguments(0)
 
Set objShellApp = CreateObject("Shell.Application")
 
'В языке VBScript не поддерживаются метки: работаем через цикл
Do
  Path_d = Left(Path_dpnx, 3)
  Set objFolder = objShellApp.Namespace(Path_d) '"C:"
 
  If Len(Path_dpnx) > 3 Then
      Path_pnx = Mid(Path_dpnx, 4)
      Set objFolderItem = objFolder.ParseName(Path_pnx) '"VoiceSpy\reports\29.05.2013"
      If objFolderItem.isLink Then 'является ли объект ярлыком?
          ItsLink = True
          On Error Resume Next
              Set objLink = objFolderItem.GetLink
          If Err = 0 Then
              Path_dpnx = objLink.Path
          Else 'if err = 70 (Permissions Denied)
              Err.Clear
              'msgbox "Для этой операции требуется повышение привилегий"
              'Silent-режим: если не хватает прав использую ссылку на исходный ярлык вместо целевого объекта
              ItsLink = False
          End If
          On Error Resume Next
      Else
          ItsLink = False
      End If
  Else 'если корневой каталог
      Set objFolderItem = objFolder.Self
      ItsLink = False
  End If
 
Loop While (ItsLink = True) 'выполнять пока целевой объект - ярлык
 
'Ниже мы копируем в буфер обмена ссылку на объект
 
'1) Способ 1 - здесь нужно использовать глаголы на английском
objFolderItem.InvokeVerb ("Copy")
 
'2) Способ 2 - здесь нужно использовать глаголы согласно системным настройкам языка
For Each objFIV In objFolderItem.Verbs()
    If objFIV.Name = "&Копировать" Then '&Открыть
        objFIV.DoIt
        Exit For
    End If
Next
 
' Вот так можно просмотреть всю коллекцию глаголов, которые поддерживает конкретный выделенный объект
' Лучше смотреть на англоязычной винде (т.к. эти глаголы обратносовместимы с локализациями)
 
If objFolderItem.IsFolder Then 'Если объект - папка
    Set objFileOrFolder = objFolderItem.GetFolder.Self
Else
    Set objFileOrFolder = objFolder.ParseName(Path_pnx)
End If
Set objVerbs = objFileOrFolder.Verbs
If (Not objVerbs Is Nothing) Then
    For Each Verb In objVerbs
        MsgBox Verb.Name
        'Debug.Print Verb.Name
    Next
End If
0
 Аватар для b0gus
739 / 337 / 134
Регистрация: 17.03.2014
Сообщений: 839
07.12.2016, 19:13
Цитата Сообщение от volodin661 Посмотреть сообщение
3) Это базовый бурно развивающийся shell от Microsoft, другого пока нет; изучать что либо или нет - зависит от задач, которые потребуется решать
более того, приближается время, когда на Win10 придётся шаманить с бубном :wall:, чтобы запустить интепретатор CMD
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,828
07.12.2016, 19:49
b0gus,
слова в статье по ссылке написаны правильные,
но нет ссылок на офиц. Microsoft ресурсы.
Особые опасения к тому же внушает фамилия автора.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.12.2016, 20:56
b0gus, как по мне они сами не знают, чем бы им заняться.
Сперва начинают делать в win10 улучшалки для CMD, а потом заменяют алиас cmd на PowerShell.
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
07.12.2016, 21:07
Цитата Сообщение от Dragokas
На сколько я помню метод InvokeVerb исполняет локале-независимый глагол
Спорить и доказывать что-либо не стану, скажу лишь по факту как есть. Когда-то наступал на грабли с InvokeVerb. В какой-то из версий Windows при попытке вызвать "delete" ничего не происходило, но после обращения к COM-обозревателю выяснилось, что для корзинки есть глагол "Удалить", а "delete" там не упомяналось. Какбы там ни было, у меня есть самописная тулза для манипуляций корзиной из консоли. Да и в PS кое-какие командлеты имеются.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2016, 21:07
Помогаю со студенческими работами здесь

Удаление файлов и папок
В общем проблема такая: у меня есть файловый менеджер, отображение элементов идет через treeview и listview. Как сделать кнопку, для...

Поиск и удаление файлов/папок
Здравствуйте. У меня такой вопрос! Как сделать bat файл, один из которых будет искать и удалять нужную папку а другой конкретный файл. ...

Удаление защищенных папок и файлов
Добрый день! Подскажите со скриптом, не могу понять как можно сделать так, чтобы удалялись защищенные файлы и папки, хочу удалять старую...

Удаление папок и файлов с выбором
Здравствуйте, прошу вашей помощи. У меня на диске C:\ постоянно собирается всякий хлам, папки, файлы,видео,музыка. Вопрос? Как создать BAT...

Запрет на удаление файлов/папок
Здравствуйте. Такая проблема: на компьютере есть два пользователя &quot;User&quot; и &quot;Admin&quot;. Задача состоит в том чтобы запретить User-у удалять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru