- 帖子
- 70
- 积分
- 76
- 技术
- 6
- 捐助
- 0
- 注册时间
- 2012-8-1
|
有一个1.txt文件,每行内容由*分割成N个部分(不超过26个):
111*222*333*444*555*666*777
111*222*333*444*555*666*777
111*222*333*444*555*666*777
111*222*333*444*555*666*777
......
现在批处理中想按要求取出其中某列或某几列内容,我用的FOR命令如下:
for /f "tokens=1,4 delims=*" %%a in (1.txt) do (echo %%a %%b)
在具体使用过程当中,发现需求经常会变化,有时候需要第1列和第4列,有时候又需要第5列至第7列,有时候甚至需要将第1列至最后1列全部显示,想出了如下代码:
set cx=1,5(其实就是想在使用中只修改此处即可达到目的,循环变量有内容就显示,无内容就不显示)
for /f "tokens=%cx% delims=*" %%a in (1.txt) do (
if not "%%a"=="" echo %%a
if not "%%b"=="" echo %%b
if not "%%c"=="" echo %%c
......
if not "%%z"=="" echo %%z
)
但在实际使用过程中发现,if并没有进行变量是否为空的判断,例如循环变量%%c为空,实际上会输出一个%c出来。
求大佬帮助解决。 |
|