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

求助:编写.bat文件读取固定宽度文件指定内容并重命名文件

用BAT脚本截取文本指定位置字符并重命名原文件

下面是实现需求的完整BAT脚本,附带关键步骤的解释:

@echo off
setlocal enabledelayedexpansion

:: 替换为你的目标文本文件路径(支持相对/绝对路径)
set "targetFile=sample.txt"

:: 读取目标文件的第5行内容
set "line5="
for /f "skip=4 tokens=* delims=" %%a in ('type "%targetFile%"') do (
    if not defined line5 set "line5=%%a"
)

:: 从第47个字符开始截取18个字符(BAT字符串索引从0开始,第47位对应索引46)
set "subStr=!line5:~46,18!"

:: 移除截取字符串中的所有空格
set "newFileName=!subStr: =!"

:: 重命名原文件(这里默认保留.txt后缀,可根据实际文件类型调整)
ren "%targetFile%" "%newFileName%.txt"

endlocal

关键步骤说明

  • 启用延迟扩展:setlocal enabledelayedexpansion是必须的,因为在循环和字符串处理中需要实时获取变量的更新值,否则无法正确读取截取后的内容。
  • 读取第5行:for /f的skip=4参数表示跳过前4行,直接读取第5行;tokens=* delims=确保读取整行内容(包括开头或中间的空格),不会被默认的空格分隔符截断。
  • 定位字符位置:BAT的字符串截取语法为变量名:~起始索引,长度,注意索引从0开始计数——所以第47个字符对应的起始索引是46,截取18个字符就写~46,18。
  • 去除空格:通过!subStr: =!将截取字符串中的所有空格替换为空,生成合法的文件名。
  • 重命名文件:使用ren命令完成重命名,注意保留文件后缀(如果原文件不是.txt,需要修改脚本中的后缀部分)。

注意事项

  • 确保目标文件的第5行长度至少为64个字符(47+18-1),否则截取会自动取到行尾,可能导致文件名不符合预期。
  • 如果新文件名包含&、|、>等特殊字符,需要额外处理(BAT对特殊字符的兼容有限,建议确保截取的字符串是合法文件名)。
  • 若脚本和目标文件不在同一目录,需要给targetFile设置完整的绝对路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:24:59