Batch file 关闭文件夹';带有批处理文件的窗口

Batch file 关闭文件夹';带有批处理文件的窗口,batch-file,directory,Batch File,Directory,我的桌面上有一个名为test的文件夹。我想创建一个批处理文件,以便在使用Windows资源管理器打开此文件夹时自动关闭窗口。我尝试了下一个命令,但在执行命令时什么也没发生 TASKKILL /F /FI "WINDOWTITLE eq test" /IM explorer.exe 显示的消息是 No tasks running with the specified criteria. 有任何帮助吗?这在Windows 8.1中有效,将资源管理器文件夹选项设置为单个窗口,但根据Mofi的答案和

我的桌面上有一个名为
test
的文件夹。我想创建一个批处理文件,以便在使用Windows资源管理器打开此文件夹时自动关闭窗口。我尝试了下一个命令,但在执行命令时什么也没发生

TASKKILL /F /FI "WINDOWTITLE eq test" /IM explorer.exe
显示的消息是

No tasks running with the specified criteria.

有任何帮助吗?

这在
Windows 8.1
中有效,将
资源管理器文件夹选项设置为
单个窗口
,但根据Mofi的答案和Mofi答案中的注释,然后解决方案取决于Windows版本

在Windows 8.1中有效的东西在Windows XP中不起作用

TASKKILL /F /FI "WINDOWTITLE eq %userprofile%\desktop\test" /IM explorer.exe

如果在Windows注册表中,则无法使用命令
taskkill
关闭文件夹的Windows资源管理器窗口

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
双字SeparateProcess的值分别为0选项未选中的查看选项卡上的单独进程启动文件夹窗口

正如所发现的(阅读下面的评论),我也可以确认,在Windows XP SP3上启用此设置不会影响打开文件夹时运行的
explorer.exe
,即使在重新启动Windows之后也是如此

因此,它取决于Windows版本(2000、XP、Vista、7、8、8.1)和文件夹选项

  • 在标题栏中显示完整路径
  • 在单独的进程中启动文件夹窗口
如果可以使用命令
taskkill
关闭资源管理器文件夹窗口以及在标题栏中查找哪个字符串,则只需输入文件夹的名称或文件夹的完整路径即可

在Windows XP或单独进程中的启动文件夹窗口未启用时,文件夹窗口不会分别作为单独任务和单独进程打开

与打开多少文件夹窗口无关,每个用户的
explorer.exe
进程数始终只有1个。每个文件夹窗口实际上只是一个始终运行Windows资源管理器(桌面)的窗口,在单独的线程中打开。Windows资源管理器只是假装文件夹窗口是Windows任务栏和Windows任务管理器的“应用程序”选项卡上的单独任务。但即使打开了多个文件夹窗口,Windows任务管理器的“进程”选项卡上也只列出一个
explorer.exe

通过选择Explorer.exe并在该进程的句柄的下方窗格中查看,可以使用的免费工具Process Explorer更好地观察Windows资源管理器的这种行为,该进程的句柄
中包含许多其他句柄,也包含打开的文件夹窗口的句柄

需要一个控制台应用程序,它按标题查找窗口,获取此窗口的句柄,并将
WM_CLOSE
事件消息发送到此文件夹窗口。例如,见

我发现的解决方案在XP SP 3上运行良好。您只需要一个小工具:


启用“文件夹视图选项”下的“标题中显示完整路径”时,会出现错误

您可以将“测试”替换为完整路径,或禁用完整路径显示

默认情况下,资源管理器作为单个进程运行,任何打开的窗口都只是该进程的一个线程。
通常,要关闭程序,您需要向进程发送一条关闭消息。在这种情况下,关闭explorer.exe将关闭所有资源管理器窗口

要关闭单个窗口,您需要通过每个窗口自己的进程打开每个窗口。 这可以通过注册表设置或在“查看->选项->查看->高级设置”下启用来完成:“启动…单独进程”

a) 查找要关闭的窗口的PID(进程ID)

通过taskmanager:
1.在进程列表中,单击“Windows资源管理器”左侧的箭头
2.检查窗口名称是否与要关闭的窗口匹配
3.右键单击“Windows资源管理器”,单击“转到详细信息”
4.记录pid

通过CMD:
tasklist/V/FI“IMAGENAME eq explorer.exe”

如果每个资源管理器窗口在其自己的进程中打开,则上述命令将在最后一列中显示窗口标题
否则将显示“不适用”

所有资源管理器窗口的pid都是相同的。Explorer.exe进程有自己的pid,标题为“N/A”
如果已启用“单独进程”,例如通过文件夹视图选项,则可以通过taskkill的进程id和筛选器选项关闭每个窗口

要关闭,必须首先激活所需的窗口,否则使用pid关闭将关闭最后一个激活的窗口,或者使用窗口标题过滤器关闭将给出错误:

信息:没有使用指定条件运行的任务

b)
taskkill/pid
将关闭最后一个活动窗口
重复此命令将在下一个窗口中显示

taskkill/im explorer.exe/fi“windowtitle eq”

taskkill/fi“IMAGENAME eq explorer.exe”/fi“windowtitle eq”

不区分大小写
如果在文件夹视图中启用了标题栏中的完整路径,则包括完整路径或通配符

要关闭所有资源管理器窗口:
taskkill/im explorer.exe

笔记:
  • 要激活资源管理器窗口,如果启用了窗口重用,则发出相同的命令打开窗口。
  • 资源管理器窗口(ing)进程的pid位于响应表的最后一行“pid”列中;可通过FOR循环访问。
  • 从@HelpingHand:

  • 激活窗口的vbs解决方案:

  • 在Win 10上测试

    我曾尝试设置完整路径,但都不正确。它在Windows 8.1中工作,但从Mofi的回答和评论来看,了解Windows版本很重要。我测试时不是这样的。对
    explorer.exe
    使用任务列表和筛选器,然后启动
    explorer c:\folder
    并重复您的taslisk命令。您将找到两个
    
    
    nircmd.exe win close title "some window title"