[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 【已解决】批处理能调用Shell32.dll来清空回收站吗?

此前发过一个帖子寻找清空回收站的办法,不过得到的回复同样是使用RD命令,使用RD命令不够便利,也不想借助第三方程序来清空
不知道有没有法子能够调用到Shell32.dll来清空回收站呢?
http://bbs.bathome.net/thread-3404-1-1.html

[ 本帖最后由 hkmhd 于 2009-3-23 16:15 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

不能。编程才能实现。
Rundll32只能调用极为有限的一部分API函数。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

使用RD命令不够便利,具体体现在什么地方呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

保存为批处理:
  1. Windows Registry Editor Version 5.00
  2. ;@cls&regedit /s "%~f0"&start cleanmgr /sagerun:&exit
  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Active Setup Temp Folders]
  4. "StateFlags0000"=dword:00000000
  5. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Compress old files]
  6. "StateFlags0000"=dword:00000000
  7. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Downloaded Program Files]
  8. "StateFlags0000"=dword:00000000
  9. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Internet Cache Files]
  10. "StateFlags0000"=dword:00000000
  11. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Memory Dump Files]
  12. "StateFlags0000"=dword:00000000
  13. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Microsoft_Event_Reporting_2.0_Temp_Files]
  14. "StateFlags0000"=dword:00000000
  15. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Offline Pages Files]
  16. @="{8E6E6079-0CB7-11d2-8F10-0000F87ABD16}"
  17. "StateFlags0000"=dword:00000000
  18. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Old ChkDsk Files]
  19. "StateFlags0000"=dword:00000000
  20. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Recycle Bin]
  21. @="{5ef4af3a-f726-11d0-b8a2-00c04fc309a4}"
  22. "StateFlags0000"=dword:00000002
  23. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Remote Desktop Cache Files]
  24. "StateFlags0000"=dword:00000000
  25. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Setup Log Files]
  26. "StateFlags0000"=dword:00000000
  27. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files]
  28. "StateFlags0000"=dword:00000000
  29. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\WebClient and WebPublisher Cache]
  30. "StateFlags0000"=dword:00000000
复制代码

TOP

楼上的比RD还夸张- -
其实也不是说RD不便利,只是想远程对所有机器执行清空回收站,感觉会挺影响效率,想尽量减少代码量

TOP

回复 5楼 的帖子

感觉会挺影响效率?依据就只是感觉吗?有没有真实的测试数据拿出来给大家分享一下?
另,代码量和执行效率没有必然的联系。如果你用了不好的算法,可能你的1行代码还不如别人的100行代码效率高:)
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

用vbs可以,但要注册dynwrap.dll,比着葫芦画瓢,来个vbs版的:
  1. Dim hWndOwner, Drive, Flags, iResult
  2. Dim Sherb_noSound, Sherb_noProgressUi, Sherb_noConfirmation, error_success
  3. Sherb_noSound  = 4                        ' 无删除声音
  4. Sherb_noProgressUi = 2                ' 无删除界面
  5. Sherb_noConfirmation = 1                ' 无确认
  6. error_success = 0
  7. ' API 参数
  8. hWndOwner = 0                        ' 对话框父窗口句柄
  9. Drive = NUL             ' 盘符,NUL 为所有盘符,or "c:\", "d:\program files\"
  10. Flags = Sherb_noSound Or Sherb_noProgressUi Or Sherb_noConfirmation        ' 标志
  11. Set Wrap = CreateObject("DynamicWrapper")
  12. Wrap.Register "Shell32.dll", "SHEmptyRecycleBin", "i=hsu", "R=l"
  13. iResult = Wrap.SHEmptyRecycleBin(hWndOwner, Drive, Flags)
  14. ' msgbox(iResult)
复制代码
dynwrap.dll 下载地址 http://bbs.bathome.net/thread-2882-1-1.html
返回值为error_success则调用成功。

[ 本帖最后由 pusofalse 于 2009-3-11 14:19 编辑 ]
心绪平和,眼藏静谧。

TOP

dynwrap.dll还是第三方工具。

不过其体积较小,可以用any2vbs将包含在脚本中。而且注册这个工具后,可以调用更多的API函数,还算比较值得。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

本帖最后由 pcl_test 于 2017-6-6 18:58 编辑

http://www.bathome.net/redirect. ... 9759&ptid=33489

TOP

  1. Sub ClrRecycleBin()  '清空回收站
  2. On Error Resume Next
  3. Dim oShell, oSHFolder, objFSO, oSHFItem, FilePath
  4. Set oShell = CreateObject("Shell.Application")
  5. Set oSHFolder = oShell.Namespace(&Ha&)
  6. Set objFSO = CreateObject("Scripting.FileSystemobject")
  7. FOR each oSHFItem IN oSHFolder.Items
  8. IF (oSHFItem.type = "File Folder") THEN  '删除文件夹
  9. FilePath = oSHFItem.Path
  10. objFSO.DeleteFolder FilePath,True
  11. ELSE                                     '删除文件
  12. FilePath = oSHFItem.Path
  13. objFSO.DeleteFile FilePath,True
  14. End IF
  15. NEXT
  16. Set objFSO = Nothing
  17. Set oshell = Nothing
  18. Set oSHFolder = Nothing
  19. END Sub
复制代码

TOP

来来去去还是这些办法,还是用第三方命令好了……谢谢楼上帮忙解决的人

TOP

返回列表