如何从批量输出文件中提取ICCID的15位数字并去除冗余内容
提取Device Id中的15位ICCID数字(批处理实现)
这里有两种实用的批处理方案,帮你从netsh的输出里提取纯15位ICCID数字,替换掉你原来的脚本即可:
方案一:使用延迟变量扩展移除空格
这个方法通过变量替换直接去除数字前的空格,逻辑清晰:
@echo off setlocal enabledelayedexpansion for /f "tokens=2 delims=:" %%a in ('%windir%\sysnative\cmd.exe /c netsh.exe mbn show interfaces ^| find "Device Id"') do ( set "iccid=%%a" rem 移除所有空格(这里仅需移除前导空格,此命令会移除所有空格,不过对纯数字来说不影响) set "iccid=!iccid: =!" echo !iccid! > C:\Users\Test\Pictures\device.txt ) endlocal
关键步骤说明:
for /f "tokens=2 delims=:":以冒号为分隔符,拆分Device Id: XXXXX这行内容,提取冒号后的部分(也就是带空格的数字)set "iccid=!iccid: =!":通过变量替换语法,把变量里的所有空格替换为空,得到纯数字setlocal enabledelayedexpansion:因为在for循环里修改并读取变量,需要启用延迟变量扩展才能正常生效
方案二:嵌套for循环自动去除前导空格
这个方法不需要启用延迟扩展,利用for /f的tokens=*参数自动忽略前导空格,更简洁:
@echo off for /f "tokens=2 delims=:" %%a in ('%windir%\sysnative\cmd.exe /c netsh.exe mbn show interfaces ^| find "Device Id"') do ( for /f "tokens=*" %%b in ("%%a") do ( echo %%b > C:\Users\Test\Pictures\device.txt ) )
关键步骤说明:
- 第一个
for同样提取冒号后的带空格内容 - 第二个
for /f "tokens=*":会自动忽略变量%%a中的所有前导空格,直接输出纯数字部分
两种方案都能完美实现你的需求,把device.txt里的内容从Device Id: 990001234567890变成纯数字990001234567890。
内容的提问来源于stack exchange,提问作者Jeff B
相关产品推荐
相关产品推荐

