[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何按照字段取文本内容,并各成一列?

文本内容如下:
Made by: Hewlett-Packard
Model is: 9470m
UUID is: 4E480B99
BIOS version is: 68IBD Ver. F.40
Serial Number is: CNU317C879
NIC 1 name is: Intel(R) 82579LM Gigabit Network Connection
MAC address is: 2C:59:E5:BC:51:F5

有十个以上相同格式文本,命名方式为1.txt,2.txt...

要求:
按照字段取文本内容,并各成一列。
如:取字段 UUID is: 后内容按列输出至文本=>
4E480B99  
4E480B99  
4E480B99  
...

需要字段
UUID is:
Serial Number is:
MAC address is:
后内容。

用于excel导入,望求解。

TOP

本帖最后由 apang 于 2013-5-7 15:39 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set r=/ic:"UUID is" /c:"Serial Number is" /c:"MAC address is"
  3. (for /l %%a in (1 1 20) do (
  4.    for /f "tokens=1* delims=:" %%b in ('findstr %r% %%a.txt') do (
  5.       set "str=!str! %%c"
  6.    )
  7.    echo,!str:~1!&set "str="
  8. ))>Result.txt
  9. pause
复制代码

TOP

回复 3# apang


    小白请问若文本命名方式为“60010006374 60010006375”应如何修改代码?

TOP

回复 4# ithoughtfrag


    如果txt文件都由数字命名、位数相同(比如60010006374,11位),可以这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. set r=/ic:"UUID is" /c:"Serial Number is" /c:"MAC address is"
  3. (for %%a in (*.txt) do (
  4.    for /f "tokens=1* delims=:" %%b in ('findstr %r% %%a') do (
  5.       set "str=!str! %%c"
  6.    )
  7.    echo,!str:~1!&set "str="
  8. ))>Result.txt
  9. pause
复制代码

TOP

回复 5# apang


FDAE8400-B639-11E2-B9FC-6C3BE53BXXXX  6CR3206XXX  6C:3B:E5:3B:95:XX
~1


再次求教:目前输出格式为横排,可否改为竖排?并去掉开头的空格?

TOP

回复 6# ithoughtfrag
  1. @echo off
  2. set r=/ibc:"UUID is" /c:"Serial Number is" /c:"MAC address is"
  3. for /f "tokens=2* delims=:" %%i in ('findstr %r% *.txt') do echo%%~j
  4. pause
复制代码

TOP

返回列表