标题: [文本处理] 批处理提取指定列,遇到空值,不能正确提取,请大家指点,谢谢! [打印本页]
作者: xslxslxsl 时间: 2022-10-5 10:23 标题: 批处理提取指定列,遇到空值,不能正确提取,请大家指点,谢谢!
提取指定列,遇到空值,不能正确提取,比如,我要提取1.txt的1与3列,以逗号分隔符分割,但是原本第二列有空值的行,去提取第三列就失败了,第二列为空的,第三列工作组不能正确提取,请大家帮帮忙,该如何正确操作,谢谢!- @echo off
- for /f "tokens=1,3 delims=," %%i in (in_txt.txt) do (
- echo %%i,%%j
- )>>out_txt.txt
- pause&exit
复制代码
in_txt.txt:
姓名,工作时间,工作组
张三,,工作组A
张三,,工作组A
张三,2022-03-01 17:03:06,工作组B
李四,2022-03-01 22:19:28,工作组B
李四,,工作组B
李四,2022-03-02 03:11:26,工作组A
out_txt.txt
姓名,工作组
张三,
张三,
张三,工作组B
李四,工作组B
李四,
李四,工作组A
工作组不应有空白啊???
作者: hlzj88 时间: 2022-10-5 14:12
- for /f "tokens=1,2,3 delims=," %%i in (in_txt.txt) do (
- echo %%j|findstr /i "工作组"&&echo %%i,%%j>>out_txt.txt || echo %%i,%%k>>out_txt.txt
- )
复制代码
这个现象我也奇怪,道理不明白,所以本回答仅作为解决问题的方案。
作者: Echo11 时间: 2022-10-5 14:25
for /F 空值是不会被赋值到变量的,所以第二第三行当没有工作时间时,没有 tokens 3。token 2就是工作组。
用2楼的方法判断一下是可以的。
作者: xslxslxsl 时间: 2022-10-5 14:41
回复 2# hlzj88
感谢指点,为什么执行代码,没有输出?
作者: hlzj88 时间: 2022-10-5 16:27
回复 4# xslxslxsl ent
我测试没有问题,复制的你的文本做为测试文本,系统win7
作者: xslxslxsl 时间: 2022-10-5 16:50
回复 5# hlzj88
好的,谢谢,我再看看,谢谢!
作者: qixiaobin0715 时间: 2022-10-6 09:41
如果文件只有3列的话:- @echo off
- (for /f "tokens=1-3 delims=," %%i in (in_txt.txt) do (
- if not "%%k"=="" (
- echo,%%i,%%k
- ) else (
- echo,%%i,%%j
- )
- ))>out_txt.txt
- pause&exit
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |