【问题标题】:Get a list of all open windows using a batch file使用批处理文件获取所有打开窗口的列表
【发布时间】:2015-10-20 14:51:16
【问题描述】:

批处理文件的新手,但到目前为止已经设法让一些方便的工具工作。但我现在被困在我教的一些微不足道的东西上。

我现在正在开发一种工具,该工具需要知道 Windows 文件资源管理器打开了什么。我看过了,我遇到的所有示例都是关于打开目录或列出指定目录的内容。我为我正在尝试做的事情找到的最接近的例子是更高级别的语言。

【问题讨论】:

    标签: batch-file window


    【解决方案1】:

    这只会列出最后一个活动的资源管理器窗口:

    @echo off
    setlocal enableDelayedExpansion
    for /f "skip=1 delims=" %%a in ('tasklist /fi "imagename eq explorer.exe" /v /fo:csv') do (
        set "info=%%a" & set "info=!info:","=^|!" & set info=!info:~1,-1!
        for /f "delims=| tokens=9" %%b in ("!info!") do if not "%%b"=="N/A" echo %%b
    )
    pause
    

    要列出所有打开的资源管理器窗口,您必须使用 cmdow 实用程序:

    for /f "tokens=8*" %%a in ('cmdow /t /b') do if %%a==explorer echo %%b
    

    【讨论】:

    • 只是想了解第一段代码。我正在考虑改变我正在实施的方法,如果我没有运气,我将使用 cmdow。
    • 第一个循环按行读取任务列表的输出,然后通过将 csv 分隔符 "," 替换为另一个分隔符来准备解析,以便提取我们需要的标记,然后是开始和结束引号被剥离。第二个循环现在可以看到由| 分隔的行中的标记,并将窗口标题放入%%b。
    • 干杯,你真的了解你的批次。我会给你选择的答案,因为我可能最终会使用 cmdow。当然,在我用头撞到砖墙上一会儿之后。谁说固执不是好品质:)
    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多