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

如何使用DOS命令移除文本行前37列提取目标文件名

DOS命令移除文本每行前37列提取文件名实现方案

场景说明

待处理的文本文件每行是带日期、时间、文件大小、文件名的固定前缀格式,示例行:
19/06/2022 11:05 38.841 2022.07.18-22.07.CPUUsage.txt
需要删除每行开头前37个字符,仅保留末尾的文件名部分。

方案1:批处理脚本实现(稳定适配大文件)

  • 提前确认两个文件路径:
    • 原始待处理文件,示例命名为filelist.txt
    • 处理后结果输出文件,示例命名为result.txt
  • 新建后缀为.bat的批处理文件,写入以下代码:
@echo off
:: 处理中文编码避免乱码
chcp 65001 >nul
set "source=filelist.txt"
set "target=result.txt"
:: 清空已有结果文件
type nul > "%target%"
:: 逐行读取内容做字符串截取
setlocal enabledelayedexpansion
for /f "usebackq delims=" %%line in ("%source%") do (
    set "content=%%line"
    :: 字符串索引从0开始计数,~37代表跳过前37个字符取剩余内容
    echo !content:~37!>> "%target%"
)
endlocal
echo 处理完成,结果已存入%target%
pause
  • 将批处理文件和待处理的filelist.txt放在同一目录,双击运行即可。
    注意:如果实际统计的前缀长度和37有偏差,直接修改代码里!content:~37!的数字即可,比如需要跳过38个字符就改成!content:~38!

方案2:命令行单行执行(无需写脚本)

打开cmd切换到待处理文件所在目录,直接执行以下命令即可完成处理:

cmd /v:on /c "for /f "usebackq delims=" %l in ("filelist.txt") do @set "s=%l" & @echo !s:~37!>>result.txt"

执行完成后当前目录下生成的result.txt就是提取完文件名的结果文件。

补充技巧

如果你的待处理文件本身是dir命令导出的列表,不需要处理已有存量文件的话,直接执行以下命令就能直接输出纯文件名列表,省去字符串截取步骤:

dir /b *.txt > result.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:30:39