Batch file 如何通过批处理命令确定特定Windows shell文件夹是否打开

Batch file 如何通过批处理命令确定特定Windows shell文件夹是否打开,batch-file,windows-10,windows-shell,Batch File,Windows 10,Windows Shell,我有一个批处理程序,可以按特定顺序打开程序和文件,这样当我登录到计算机时,我甚至不需要单击一下就可以打开所有内容。该脚本将自动为冷启动运行,通过调整答案,可以运行该脚本以简单地打开尚未打开的窗口,而不创建副本 通过确定程序是否已在运行,这段代码几乎适用于我需要的所有内容: SETLOCAL EnableExtensions set EXE=notepad++.exe FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x

我有一个批处理程序,可以按特定顺序打开程序和文件,这样当我登录到计算机时,我甚至不需要单击一下就可以打开所有内容。该脚本将自动为冷启动运行,通过调整答案,可以运行该脚本以简单地打开尚未打开的窗口,而不创建副本

通过确定程序是否已在运行,这段代码几乎适用于我需要的所有内容:

SETLOCAL EnableExtensions
set EXE=notepad++.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
start C:\MEDIA\OFFICE\Notepad++\notepad++.exe
goto FIN
:FOUND
echo Notepad++ is already running.
:FIN
但是,我不知道如何使用此方法,也不知道有哪些替代方法可以告诉我以下特定shell文件夹是否打开

我的文档所需的/工作路径为:

我的计算机的绝对路径是:

重要澄清

该目录是一个符号链接,如果您好奇,该命令是Mklink/J C:\Users\John\JAB creates D:\My Documents\JAB creates。 我不想使用绝对路径,我想在我的文档下打开目录,而不是我的计算机。 我已经删除了Windows资源管理器中的垃圾条目,如库和快速访问,我使用的文档现在称为用户文件。此命令通过“我的文档”打开目录,而不是在示例中将其列在“我的计算机”下。 如果正在测试,则需要在“视图”选项卡下的“文件夹选项”窗口中启用“展开以打开文件夹”并显示所有文件夹选项,否则默认情况下会隐藏有用的目录。 重要前提 首先修复文件夹选项,否则尝试将毫无意义:

其次,这是视觉上应该发生的:


在Windows 10 explorer.exe中,默认情况下会提供不适用的窗口标题,但如果要启动这些资源管理器实例,则需要解决此问题

通过运行explorer.exe或打开图标定期打开explorer将导致以下标题查询:

C:\Users\***>tasklist /fi "imagename eq explorer.exe" /fo list /v
Image Name:   explorer.exe
PID:          5320
Session Name: Console
Session#:     1
Mem Usage:    141,516 K
Status:       Running
User Name:    ***\***
CPU Time:     0:31:41
Window Title: N/A
启动带有标题标志的explorer.exe时,甚至不需要指定字符串,这将强制explorer保持其标题值的准确性。因此,在上面的代码中,按如下方式调用explorer.exe:

C:\Users\***>explorer.exe /Title
这将导致我们的标题查询返回实际标题,从而返回当前打开的文件夹:

Image Name:   explorer.exe
PID:          13888
Session Name: Console
Session#:     1
Mem Usage:    45,964 K
Status:       Running
User Name:    ***\***
CPU Time:     0:00:00
Window Title: Documents

因此,现在您需要做的就是使用tasklist/fi imagename eq explorer.exe/fo list/v查询所有资源管理器实例,并解析返回的数据以确定您希望标识的文件夹名称,如下所示我检查标题中的文档:

C:\Users\***>tasklist /fi "imagename eq explorer.exe" /fo list /v | find "Documents"
Window Title: Documents

C:\Users\***>

上述查询将为“已找到/未找到”返回0代码或1代码。您可以使用此选项让代码检查windows explorer.exe中是否打开了特定文件夹。我希望这能让你很好地理解Windows10古怪的浏览器用法

如果在我登录到计算机时,您使用它让所有内容都打开了,甚至连一次单击都没有,那么您的程序怎么可能已经打开了呢?当我登录时,桌面和任务栏总是空的,这合理地表明我没有运行任何窗口程序。登录后,谁在运行脚本之前打开了您的文件夹?无论如何,已经有一个重复的问题了。但是我不认为你可以检查它是否在我的计算机或我的文档的上下文中打开,除非你将调试器附加到资源管理器。约翰,我对资源管理器的工作原理了解得足够多,并且已经完整地阅读了你的问题。您发布了不相关的工作代码,同时还为我们提供了有关符号链接和重命名/重定向路径的不必要信息。奇怪的是,我和@phuclv似乎同样缺乏理解力,不是吗?我们都注意到,在登录时,您的特定窗口进程不应该已经打开,并且不能使用标准的批处理文件命令来完成。你在找一个离题的话题我怎么能?回答,但StackOverflow与一般编程无关。您的问题与主题无关。这是一个通用的编程工具,本网站为您提供代码的特定问题提供帮助。要求推荐软件(即调试器)也是离题的。拥有最终决定权并不能压倒网站指南!问题是,如果之前打开的文件夹没有/Title,那么您的方法将无法工作。使用更可靠。而且您的解决方案仍然无法区分已打开文件夹“我的文档”或“我的电脑”的上下文!我对此进行了测试,我喜欢这个想法,尽管在尝试使用/title标志并将shell命令与引号按不同顺序组合后,它总是忽略shell命令或打开另一个命令提示符。在运行explorer.exe时,如何将/title与shell:UsersFilesFolder\JAB creates结合使用?嗨,John,我尝试通过shell启动explorer,只需打开一个新的命令提示符,就明白了这一点。古怪的我建议的解决方案和简化您的文件夹打开行如下。将开始%windir%\explorer.exe shell:UsersFilesFolder\JAB creates更改为explorer///Title。// 是我的文档默认位置的缩写。更正:explorer///Title注意,我删除了最外层的quoteStart%windir%\explorer shell:UsersFilesFolder\JAB Creations///Title不起作用。我添加了关于“显示所有文件夹”的说明,并在底部问题的文件夹选项中展开到当前文件夹。您能试着调整它并用shell:UsersFilesFolder\Documents进行测试吗?我觉得我们真的很接近,我希望能够接受答案D
Image Name:   explorer.exe
PID:          13888
Session Name: Console
Session#:     1
Mem Usage:    45,964 K
Status:       Running
User Name:    ***\***
CPU Time:     0:00:00
Window Title: Documents

C:\Users\***>tasklist /fi "imagename eq explorer.exe" /fo list /v | find "Documents"
Window Title: Documents

C:\Users\***>