标题: [文本处理] 批处理如何按照字段取文本内容,并各成一列? [打印本页]
作者: 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 编辑
- @echo off&setlocal enabledelayedexpansion
- set r=/ic:"UUID is" /c:"Serial Number is" /c:"MAC address is"
- (for /l %%a in (1 1 20) do (
- for /f "tokens=1* delims=:" %%b in ('findstr %r% %%a.txt') do (
- set "str=!str! %%c"
- )
- echo,!str:~1!&set "str="
- ))>Result.txt
- pause
复制代码
作者: ithoughtfrag 时间: 2013-5-7 17:16
回复 3# apang
小白请问若文本命名方式为“60010006374 60010006375”应如何修改代码?
作者: apang 时间: 2013-5-7 18:00
回复 4# ithoughtfrag
如果txt文件都由数字命名、位数相同(比如60010006374,11位),可以这样:- @echo off&setlocal enabledelayedexpansion
- set r=/ic:"UUID is" /c:"Serial Number is" /c:"MAC address is"
- (for %%a in (*.txt) do (
- for /f "tokens=1* delims=:" %%b in ('findstr %r% %%a') do (
- set "str=!str! %%c"
- )
- echo,!str:~1!&set "str="
- ))>Result.txt
- 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 - @echo off
- set r=/ibc:"UUID is" /c:"Serial Number is" /c:"MAC address is"
- for /f "tokens=2* delims=:" %%i in ('findstr %r% *.txt') do echo%%~j
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |