windows批处理for循环的坑

太长不看版:windows批处理的for,可以使用tokens和delims来读出指定列的内容,但是,当分隔符紧紧相连的时候,token会按顺序取下一个不是分隔符的字符作为内容,而不是取null。


详情:

准备一个测试文件,叫test.txt如下:

1,2,3,4,5
1,,2,3,4,5
1,,,2,3,4,5
1,,, ,2,3,4,5
1,,,,a,2,3,4,5

打开cmd,输入如下内容:

for /f "tokens=2 delims=," %i in ('type test.txt') do (echo %i)

得到的结果是:


可以注意到,命令的分隔符是“,”,取的是第二列

第一行结果是2,无可厚非

第二行结果也是2,喵喵喵?难道不是null么?

第三行也是2,显然连续的多个逗号都被作为同一个分隔符处理了

第四行取到的其实是空格,所以显示了echo的状态

第五行取到a,很合理……


结论,连续的分隔符会作为同一个分隔符被处理,直到取到下一个不是分隔符的字符,而不是我们以为的取到null。 那么用for从csv中处理结果会变得贼麻烦……批处理真难用……


吐槽:csdn的啥破编辑器……真难用……现在是2018年了,竟然还有这么难用的编辑器……csdn药丸。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值