Board logo

标题: [系统相关] [已解决]怎样用bat重启explorer资源管理器不关闭打开的文件夹呢? [打印本页]

作者: 867258173    时间: 2014-11-7 14:15     标题: [已解决]怎样用bat重启explorer资源管理器不关闭打开的文件夹呢?

本帖最后由 867258173 于 2014-11-7 23:26 编辑

有一些bat代码必须重启explorer才能生效。所以需要重启explorer资源管理器。

tskill explorer

这个是最简单重启资源管理器,2秒就好了,但是每次重启explorer都默认关闭打开的explorer窗口?每次必须重新打开explorer窗口?比较麻烦,请大神做个关闭或刷新explorer但不关闭之前打开的explorer窗口 代码?谢谢
作者: DAIC    时间: 2014-11-7 14:30

我用 Total Commander,几乎不使用资源管理器,从来没有这个烦恼
作者: amwfjhh    时间: 2014-11-7 14:34

tskill ?
taskkill /f /im explorer* ?
作者: DAIC    时间: 2014-11-7 14:37

回复 3# amwfjhh


    你没有理解楼主的问题吧
作者: amwfjhh    时间: 2014-11-7 16:54

确实,原以为是第三方程序,结果XP还真有TSKILL这个命令,是我孤陋寡闻了。
貌似一关闭explorer,所有的文件夹都会被强制关闭,除非是主资源管理器之外有独立PID的进程,可以指定PID来进行关闭,这样不会影响到主资源管理器,但这估计又达不到楼主目标。
不知道楼主重启资源管理器目的是为什么呢?如果是为刷新系统配置,比如批处理更换桌面后,想要即时显示桌面背景之类的话,可以不用关闭资源管理器,直接利用重定向文件关联的方法来实现系统配置的刷新,比如下句:
  1. assoc .bmp=bmpfile
复制代码

作者: yu2n    时间: 2014-11-7 16:56

本帖最后由 yu2n 于 2015-5-6 22:17 编辑

VBS可以酱紫。
【更新】坛友 CrLf 提醒explorer打开路径可用
  1. oShell.explore strURL
复制代码
  1. Call RestartExplorer()
  2. Function RestartExplorer()
  3.   Dim arrURL(), strURL, oShell, oWin, n
  4.   n = -1
  5.   Set oShell = CreateObject("Shell.Application")
  6.   For Each oWin In oShell.Windows
  7.     If Instr(1, oWin.FullName, "\explorer.exe", vbTextCompare) Then
  8.       n = n + 1
  9.       ReDim Preserve arrURL(n)
  10.       arrURL(n) = oWin.LocationURL
  11.     End If
  12.   Next
  13.   CreateObject("WScript.Shell").run "tskill explorer", 0, True
  14.   For Each strURL In arrURL
  15.     oShell.Explore strURL
  16.   Next
  17. End Function
复制代码
参考:VBS关闭重复的文件夹窗口
http://www.bathome.net/thread-32053-1-1.html
作者: 867258173    时间: 2014-11-7 19:41

本帖最后由 867258173 于 2014-11-7 19:58 编辑

回复 6# yu2n


   谢谢,这个确实能用,但请问怎样在批处理内部调用vbs或者运行bat创建一个隐藏临时vbs,然后运行完成自动删除呢?
http://www.jb51.net/article/25962.htm

不知大神能否能写个代码呢?
作者: CrLf    时间: 2014-11-7 20:43

回复 6# yu2n


可以用 explore 方法:
  1. objShell.Explore strURL
复制代码

作者: 867258173    时间: 2014-11-7 21:10

回复 8# CrLf [/‘b]

’objShell.Explore strURL’不是内部或外部命令,也不是可执行的程序和批处理。
请问这是怎么回事?
作者: yu2n    时间: 2014-11-7 21:34

本帖最后由 yu2n 于 2015-5-6 22:16 编辑

回复 9# 867258173
回复  yu2n
可以用 explore 方法:
CrLf 发表于 2014-11-7 20:43

谢谢提醒。BAT版如下。
  1. @echo off
  2. title 重启 Explorer 示例程序
  3. set/p "p=即将重启 Explorer,"<nul & pause
  4. Call :_RestartExplorer
  5. echo 完成!
  6. pause
  7. :: 重启 Explorer
  8. goto :eof
  9. :_RestartExplorer
  10. (
  11.   echo Dim arrURL^(^), strURL, oShell, oWin, n
  12.   echo n = -1
  13.   echo Set oShell = CreateObject^("Shell.Application"^)
  14.   echo For Each oWin In oShell.Windows
  15.   echo   If Instr^(1, oWin.FullName, "\explorer.exe", vbTextCompare^) Then
  16.   echo     n = n + 1
  17.   echo     ReDim Preserve arrURL^(n^)
  18.   echo     arrURL^(n^) = oWin.LocationURL
  19.   echo   End If
  20.   echo Next
  21.   echo CreateObject^("WScript.Shell"^).run "tskill explorer", 0, True
  22.   echo For Each strURL In arrURL
  23.   echo   oShell.Explore strURL
  24.   echo Next
  25. )>"%temp%\RestartExplorer.vbs"
  26.   CScript //NoLogo "%temp%\RestartExplorer.vbs"
  27.   del /q /f "%temp%\RestartExplorer.vbs"
  28.   goto :eof
复制代码

作者: 867258173    时间: 2014-11-7 23:26

回复 10# yu2n


    感谢。已成功运行。
作者: eech    时间: 2015-3-7 01:55

win764 运行后,错误 800A0408 无效字符

不好意思,看错,BAT啊




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2