You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Batch批处理适配通配符作业目录 实现文本字符串检索

批处理脚本适配方案

原脚本核心问题是硬编码了完全匹配作业号的目录路径,新环境下目录名带_作业名称后缀,仅需增加目录前缀匹配逻辑即可适配,完全保留原有使用习惯,调用方式和之前一致,不需要输入完整目录名。同时可按需开启子目录递归检索,满足遍历子目录文件的需求。

核心修改点

  • 移除原有固定目录存在校验,改用通配符匹配f:\acad\下所有以「作业号_」开头的目录,自动识别真实作业目录路径
  • 所有后续文件检索逻辑统一使用匹配到的真实目录路径,不改动原有字符串检索规则
  • 可选开启子目录递归,替换原有仅遍历一级目录的逻辑,覆盖所有子目录下的目标文件

修改后完整代码

@echo off
setlocal

:: 参数合法性校验
if "%1"==""  goto error
if "%2"==""  goto error

:: 匹配带后缀的作业目录(格式:作业号_任意作业名)
set "JOB_DIR="
for /d %%d in (f:\acad\%2_*) do (
    set "JOB_DIR=%%d"
    goto dir_found
)
:dir_found
if not defined JOB_DIR goto error2

:: 初始化结果输出文件
echo. *** Search results for all Geodimeter raw data files *** >c:\dos_survey\null.
echo. >>c:\dos_survey\null.
echo. *** Searching for 5=%1 *** >>c:\dos_survey\null.
:: 如需仅检索一级目录,删除下一行的 /R "%JOB_DIR%" 参数,路径改回 "%JOB_DIR%\*.%2" 即可
FOR /R "%JOB_DIR%" %%F IN (*.%2) DO FIND /I "5=%1" "%%F" >>c:\dos_survey\null.
echo. >>c:\dos_survey\null.
echo. *** Searching for PT%1 *** >>c:\dos_survey\null.
echo. >>c:\dos_survey\null.
FOR /R "%JOB_DIR%" %%F IN (*.%2) DO FIND /I "PT%1" "%%F" >>c:\dos_survey\null.
echo. >>c:\dos_survey\null.
echo. *** Searching for %1, *** >>c:\dos_survey\null.
echo. >>c:\dos_survey\null.
FOR /R "%JOB_DIR%" %%F IN (*.%2) DO FIND /I "%1," "%%F" >>c:\dos_survey\null.
echo. >>c:\dos_survey\null.
echo. GPS file search results: >>c:\dos_survey\null.
FOR /R "%JOB_DIR%" %%F IN (GPS*.%2) DO FIND /I "%1," "%%F" >>c:\dos_survey\null.
echo. >>c:\dos_survey\null.
echo. TFR file search results: >>c:\dos_survey\null.
FOR /R "%JOB_DIR%" %%F IN (T*.%2) DO FIND /I "--%1" "%%F" >>c:\dos_survey\null.
echo.
CALL LN
echo.
goto end

:error
echo.
echo. **********************************************************************
echo. ***** USAGE:   FINDPT [point number] [job]                      ******
echo. ***** EXAMPLE: To find point number 1254 in job number 511,     ******
echo. *****          type "FINDPT 1254 511" followed by [RETURN].     ******
echo. **********************************************************************
echo.
goto end

:error2
echo.
echo. Invalid syntax, or job directory starting with "%2_" does not exist.
goto error

:end
endlocal

补充说明

  • 脚本默认开启子目录递归检索,如需和旧脚本保持一致仅搜索作业目录根级文件,按代码注释修改FOR循环格式即可
  • 所有FIND命令新增/I参数实现不区分大小写匹配,如需严格大小写匹配,直接删除该参数
  • 调用方式与旧脚本完全一致:例如作业号511对应目录为511_某某道路项目时,直接执行FINDPT 1254 511即可,无需输入目录后缀内容
  • 若同一作业号下存在多个作业号_*格式的目录,脚本默认匹配文件排序下第一个命中的目录,如有多目录匹配需求可自行调整遍历逻辑

内容的提问来源于stack exchange,提问作者MIKEY9821

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:39:20