批量:打开 Windows 资源管理器并输入搜索查询

Batch: Open Windows Explorer and enter a search query

根据标题,我可以使用批处理打开特定文件夹(始终相同)并输入搜索查询(在 window 的搜索框 top-right 的框中)吗?

更多信息/最终目标:

我们有一个 'Projects' 文件夹,其中包含我们每个项目的 sub-folders 列表。每个子文件夹名称以作业编号开头,即:

356 - 22 St. Lewes Avenue

357 - 104 Madeitup Square

项目的发票文件 (pdf) 全部单独存储在一个 'Invoice' 文件夹中。每个项目可能有多个发票,因此文件夹中的文件如下所示:

356-1.pdf

356-2.pdf

356-3.pdf

357-1.pdf

357-2.pdf

我的最终目标是能够在每个项目文件夹中都有一个通用的批处理文件,它将打开发票文件夹,并通过从项目文件夹名称中解析项目编号,将其输入搜索框并仅显示与该项目相关的发票。

第一行采用批处理文件所在目录的名称,并将其存储在名为pd 的变量中。第二行开始一个搜索查询,该查询在名为 "...\invoice 的目录中搜索名称包含 pd 变量的前 3 个字符的任何文件或文件夹"(将其替换为实际 Invoice 目录的完整路径)。

for %%* in (.) do set "pd=%%~nx*"
start "" "search-ms:query=%pd:~0,3%&crumb=location:...\invoice&"

批处理无效

批处理脚本不适用于 GUI 操作。对于所选工具,所描述的目标似乎很难甚至不可能。也许,批处理可以解决一些重新制定的任务,例如将与项目相关的发票软链接到 tmp 文件夹中,这样您就可以在一个地方看到它们。尽管如此,恕我直言,解决方案将非常庞大且痛苦。不过,有个好消息:

AutoIt 会做

AutoIt is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting.

准确描述行为的整个脚本共 10 行(不包括评论):

;script is supposed to be run from root folder of any individual project
#include <File.au3>

;split full project path into array of folder names
Global $aProjFolderTree = StringSplit(@WorkingDir, "\/")
;get name of the last folder. It should be project name like "356 - 22 St. Lewes Avenue"
Global $sProjLastFolderName = $aProjFolderTree[$aProjFolderTree[0]]

;split project name into words
Global $aProjNameWords = StringSplit($sProjLastFolderName, " ")
;get the first word which is project ID like "356"
Global $sProjId = $aProjNameWords[1]

;open invoice directory in explorer
Global $sInvoiceFolder = _PathFull("..\invoice", @WorkingDir)
Run('explorer.exe ' & $sInvoiceFolder)
;wait until it's ready
WinWaitActive("invoice", "", 10)

;click onto "search" control. NB! control ID may differ on your system, use "AutoIt Window Info" tool to check
ControlClick( "[LAST]", "", "[CLASS:DirectUIHWND; INSTANCE:1]")
;put project Id into it
ControlSend( "[LAST]", "", "[CLASS:DirectUIHWND; INSTANCE:1]", $sProjId)

为了运行:

  • 安装 AutoIt
  • 在您的项目文件夹中创建 script_name.au3 文本文件并粘贴提供的代码
  • 双击

您可以将脚本打包成可执行文件,如果需要,这将 运行 在没有 AutoIt 的机器上正常运行。

    SET HPATH="I:\Share\HOTLINE"
    SET /p DriverNb=Enter Driver Number: 
    start "" "search-ms:query=%DriverNb%&crumb=location:%HPATH%&"