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

如何用批处理脚本从文本文件提取10位数字格式电话号码

解决批处理提取10位电话号码的问题

嘿,我来帮你搞定这个批处理脚本的问题!你的思路方向是对的,但Windows CMD里的findstr正则语法和你习惯的风格不太一样,脚本结构也需要调整下。

原脚本的问题

  1. @echo off和setlocal要分开写,不然setlocal会被当成@echo off的参数,延迟变量扩展没法生效
  2. findstr不支持\d(得用[0-9]代替),而且{10}需要转义成\{10\}才能被识别
  3. 原脚本的for /f只会读取每行的第一个token,没法提取整行里所有的电话号码

完整的可运行脚本

@echo off
setlocal enabledelayedexpansion

:: 初始化存储电话号码的变量
set "phone_list="

:: 找出所有包含10位数字的行,再逐行拆分检查每个单词
for /f "tokens=*" %%A in ('findstr /r "\<[0-9]\{10\}\>" print.txt') do (
    :: 拆分当前行的每个单词
    for %%B in (%%A) do (
        :: 严格检查当前单词是否是10位纯数字
        echo %%B | findstr /r "^[0-9]\{10\}$" >nul
        if !errorlevel! equ 0 (
            :: 将符合条件的号码加入列表,用空格分隔
            set "phone_list=!phone_list! %%B"
        )
    )
)

:: 去掉列表开头的多余空格,写入目标文件
echo !phone_list:~1! > newFile.txt

endlocal

脚本细节解释

  • findstr /r "\<[0-9]\{10\}\>":/r启用正则模式,\<和\>是单词边界,确保我们匹配的是独立的10位数字(不会从更长的数字串里截取)
  • 内层的for %%B in (%%A):把每行内容按空格拆分成单个单词,逐个检查避免漏过任何号码
  • echo %%B | findstr /r "^[0-9]\{10\}$":^和$确保整个单词都是10位数字,不会误抓带字母/符号的串
  • !phone_list:~1!:去掉变量开头的第一个空格,让输出格式更整洁

测试效果

用你提供的print.txt内容运行脚本后,newFile.txt里的内容会是:

0775344623 0766555444 0754655321 0771344623 0766222444

完全符合你期望的空格分隔格式,所有10位数字都被准确提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:33:51