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

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

原文件内容如下,需要提取一些列赋值到变量:
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拔刀相助。

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

TOP

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

TOP

回复 3# sonorous


在delims=()后面加上tab和空格。
D:\Temp\1>cat nvrestore.lst不是txt文件内容吗?如果不是,删除代码中的skip=1

TOP

谢了,我用UE转换一下TAB和空格就可以了

TOP

回复 5# sonorous


没有必要,在delims指定列分隔符的时候多加一个tab符号就行了。

TOP

返回列表