找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24640|回复: 5

[文本处理] 批处理怎样提取文件中的指定列?

[复制链接]
发表于 2012-3-19 23:55:46 | 显示全部楼层 |阅读模式
原文件内容如下,需要提取一些列赋值到变量:
D:\Temp\1>cat nvrestore.lst
INVISIBLE       File System     backup01 (Saveset 6) 20:42 19 Mar 2012
INVISIBLE       File System     backup02 (Saveset 5) 20:42 19 Mar 2012
INVISIBLE       File System     backup02 (Saveset 4) 20:42 19 Mar 2012
INVISIBLE       File System     backup01 (Saveset 3) 20:42 19 Mar 2012
INVISIBLE       File System     backup02 (Saveset 2) 20:37 19 Mar 2012


要提的内容:INVISIBLE  backup01 6 19Mar2012 ,关健“(Saveset 2)”中的“2”弄不出来,用了delims后,2可以取到,但是其它就乱了

UNIX下可以轻松搞定,请熟悉WIN的TX拔刀相助。
发表于 2012-3-20 09:33:06 | 显示全部楼层
  1. @echo off
  2. for /f "skip=1 tokens=1-10 delims=() " %%a in (test.txt) do (
  3.     echo %%a %%d %%f %%h %%i %%j
  4. )
  5. pause
复制代码
 楼主| 发表于 2012-3-20 10:25:08 | 显示全部楼层
apang 发表于 2012-3-20 09:33


有TAB的,不完全是空格,结果如下

D:\Temp\1>for /f "skip=1 tokens=1-10 delims=() " %a in (nvrestore.lst) do (echo %a %d %f %h %i %j)

D:\Temp\1>(echo INVISIBLE       File 5 19 2012   )
INVISIBLE       File 5 19 2012

D:\Temp\1>(echo INVISIBLE       File 4 19 2012   )
INVISIBLE       File 4 19 2012

D:\Temp\1>(echo INVISIBLE       File 3 19 2012   )
INVISIBLE       File 3 19 2012

D:\Temp\1>(echo INVISIBLE       File 2 19 2012   )
INVISIBLE       File 2 19 2012
发表于 2012-3-20 10:44:44 | 显示全部楼层
回复 3# sonorous


在delims=()后面加上tab和空格。
D:\Temp\1>cat nvrestore.lst不是txt文件内容吗?如果不是,删除代码中的skip=1
 楼主| 发表于 2012-3-20 11:12:31 | 显示全部楼层
谢了,我用UE转换一下TAB和空格就可以了
发表于 2012-3-20 19:05:38 | 显示全部楼层
回复 5# sonorous


没有必要,在delims指定列分隔符的时候多加一个tab符号就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 21:12 , Processed in 0.011588 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表