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

如何编写批处理命令批量移动32字符文件名的PDF文件

解决批处理移动固定长度文件名PDF的问题

Windows批处理的通配符中,*匹配0或多个任意字符,?匹配恰好1个任意字符。你之前用32个?的写法理论上应该匹配文件名主体(不含扩展名)正好32字符的PDF,但实际生效异常,大概率是因为对“文件名长度”的定义混淆(比如是否包含扩展名),或者遍历路径的逻辑问题。更可靠的方式是直接判断文件名的长度:

以下是修正后的批处理命令,会遍历当前目录及子目录下所有PDF文件,仅复制文件名主体长度为32字符的文件到目标目录:

@echo off
setlocal enabledelayedexpansion
set "targetDir=%cd%\AllFiles\"
echo 目标目录: !targetDir!

:: 遍历所有PDF文件
for /r %%f in (*.pdf) do (
    :: 提取文件名主体(不含路径和扩展名)
    set "fileName=%%~nf"
    :: 判断文件名长度是否为32
    if "!fileName:~32!"=="" (
        if not "!fileName:~31!"=="" (
            copy "%%f" "!targetDir!"
            echo 已复制: "%%f"
        )
    )
)
endlocal

代码说明:

  • setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环内的变量能正确更新
  • %%~nf:提取当前文件的文件名主体(去掉路径和.pdf扩展名)
  • !fileName:~32!:取文件名从第33个字符开始的部分,若为空则说明长度≤32
  • !fileName:~31!:取文件名从第32个字符开始的部分,若不为空则说明长度≥32
  • 两个条件结合即可精准匹配长度为32的文件名主体

如果你的“文件名长度”是包含.pdf扩展名的总长度(即总长度32字符),只需把判断逻辑改成:

set "fullName=%%~nxf"
if "!fullName:~32!"=="" if not "!fullName:~31!"=="" ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:22:45