标题: [系统相关] [已解决]怎样用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来进行关闭,这样不会影响到主资源管理器,但这估计又达不到楼主目标。
不知道楼主重启资源管理器目的是为什么呢?如果是为刷新系统配置,比如批处理更换桌面后,想要即时显示桌面背景之类的话,可以不用关闭资源管理器,直接利用重定向文件关联的方法来实现系统配置的刷新,比如下句:复制代码
作者: yu2n 时间: 2014-11-7 16:56
本帖最后由 yu2n 于 2015-5-6 22:17 编辑
VBS可以酱紫。
【更新】坛友 CrLf 提醒explorer打开路径可用复制代码
- Call RestartExplorer()
- Function RestartExplorer()
- Dim arrURL(), strURL, oShell, oWin, n
- n = -1
- Set oShell = CreateObject("Shell.Application")
- For Each oWin In oShell.Windows
- If Instr(1, oWin.FullName, "\explorer.exe", vbTextCompare) Then
- n = n + 1
- ReDim Preserve arrURL(n)
- arrURL(n) = oWin.LocationURL
- End If
- Next
- CreateObject("WScript.Shell").run "tskill explorer", 0, True
- For Each strURL In arrURL
- oShell.Explore strURL
- Next
- 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 方法:复制代码
作者: 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版如下。- @echo off
- title 重启 Explorer 示例程序
- set/p "p=即将重启 Explorer,"<nul & pause
-
- Call :_RestartExplorer
- echo 完成!
- pause
-
- :: 重启 Explorer
- goto :eof
- :_RestartExplorer
- (
- echo Dim arrURL^(^), strURL, oShell, oWin, n
- echo n = -1
- echo Set oShell = CreateObject^("Shell.Application"^)
- echo For Each oWin In oShell.Windows
- echo If Instr^(1, oWin.FullName, "\explorer.exe", vbTextCompare^) Then
- echo n = n + 1
- echo ReDim Preserve arrURL^(n^)
- echo arrURL^(n^) = oWin.LocationURL
- echo End If
- echo Next
- echo CreateObject^("WScript.Shell"^).run "tskill explorer", 0, True
- echo For Each strURL In arrURL
- echo oShell.Explore strURL
- echo Next
- )>"%temp%\RestartExplorer.vbs"
- CScript //NoLogo "%temp%\RestartExplorer.vbs"
- del /q /f "%temp%\RestartExplorer.vbs"
- 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 |