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

如何在文件中搜索字符串?批处理按内容移动指定文件

批处理文件扩展:按文件内容分类移动.print_job文件

嘿,Roy,你已经搞定了定位目标文件的第一步,接下来咱们把按内容分类移动的逻辑补上就行。核心思路就是对每个找到的.print_job文件,用findstr命令检查是否包含指定关键词,再根据结果执行移动操作。

完整代码示例

@echo off
setlocal EnableDelayedExpansion

:: 先确保所有目标目录存在,避免移动时出错
if not exist "C:\Folder1" mkdir "C:\Folder1"
if not exist "C:\Folder2" mkdir "C:\Folder2"
:: 替换成你实际的SPI目标目录
set "SPI_TARGET_DIR=C:\Your_SPI_Folder"
if not exist "!SPI_TARGET_DIR!" mkdir "!SPI_TARGET_DIR!"

for %%I in (C:\test\*.print_job.*) do (
    set "CURRENT_FILE=%%I"
    set "FILE_NAME=%%~nxI"
    
    :: 检查文件是否包含MOUNT(优先处理,顺序决定匹配优先级)
    findstr /i "MOUNT" "!CURRENT_FILE!" >nul
    if !errorlevel! equ 0 (
        echo 移动文件 !FILE_NAME! 到 C:\Folder1
        move "!CURRENT_FILE!" "C:\Folder1\"
        goto next_file  :: 找到匹配后跳过后续检查
    )
    
    :: 检查文件是否包含PROD
    findstr /i "PROD" "!CURRENT_FILE!" >nul
    if !errorlevel! equ 0 (
        echo 移动文件 !FILE_NAME! 到 C:\Folder2
        move "!CURRENT_FILE!" "C:\Folder2\"
        goto next_file
    )
    
    :: 检查文件是否包含SPI
    findstr /i "SPI" "!CURRENT_FILE!" >nul
    if !errorlevel! equ 0 (
        echo 移动文件 !FILE_NAME! 到 !SPI_TARGET_DIR!
        move "!CURRENT_FILE!" "!SPI_TARGET_DIR!\"
        goto next_file
    )
    
    :: 可选:处理不匹配任何关键词的文件,比如移到默认目录
    :: if not exist "C:\Unmatched_Files" mkdir "C:\Unmatched_Files"
    :: move "!CURRENT_FILE!" "C:\Unmatched_Files\"
    
    :next_file
)

pause

关键细节说明

  • findstr /i参数:/i表示忽略大小写匹配,如果你需要严格区分大小写,去掉这个参数即可。
  • errorlevel判断逻辑:findstr找到匹配内容时会返回errorlevel 0,未找到则返回非0值,以此作为判断依据。
  • 目录预创建:用if not exist ... mkdir提前创建目标目录,避免move命令因目录不存在报错。
  • 匹配优先级:通过goto next_file在找到第一个匹配关键词后跳过后续检查,如果你希望一个文件匹配多个关键词时被多次处理(通常不需要),可以删掉goto语句。
  • SPI目录自定义:记得把set "SPI_TARGET_DIR=C:\Your_SPI_Folder"里的路径替换成你实际需要的目录。

如果后续要添加更多关键词分类,直接复制一段findstr检查逻辑,调整关键词和目标目录就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:38