Board logo

标题: [文本处理] 批处理如何按照字段取文本内容,并各成一列? [打印本页]

作者: ithoughtfrag    时间: 2013-5-7 13:45     标题: 批处理如何按照字段取文本内容,并各成一列?

文本内容如下:
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:
后内容。
作者: ithoughtfrag    时间: 2013-5-7 13:46

用于excel导入,望求解。
作者: apang    时间: 2013-5-7 15:38

本帖最后由 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
复制代码

作者: ithoughtfrag    时间: 2013-5-7 17:16

回复 3# apang


    小白请问若文本命名方式为“60010006374 60010006375”应如何修改代码?
作者: apang    时间: 2013-5-7 18:00

回复 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
复制代码

作者: ithoughtfrag    时间: 2013-5-28 09:36

回复 5# apang


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


再次求教:目前输出格式为横排,可否改为竖排?并去掉开头的空格?
作者: terse    时间: 2013-5-28 10:39

回复 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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2