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

[文本处理] for命令的delims和tokens怎么搭配使用分割字段

本帖最后由 pcl_test 于 2016-8-29 17:12 编辑

for /f delims tokens的问题
如果每行的文本有多个相同的分隔符怎么办?
比如
4、情歌-经典-黄灿-黄玫瑰.mp3
里面有3个-做分隔符,但是我想截取黄灿-黄玫瑰.mp3
那delims=-是不是没用?比如要delims=- - -,然后借用tokens=34才行?
或者有其它方法请明示。
1

评分人数

    • pcl_test: 发帖前先使用论坛搜索PB -3

本帖最后由 lyonamstrong 于 2016-8-28 23:30 编辑

试了下,如果把一行文本分隔成3块,要显示任意两块,23或者2,3或者2,*都不行。难道是我的姿势不对……
但是单独显示2或者3是可以的,所以分隔是没问题

TOP

就是3楼的那条代码
for /f "tokens=2,* delims=-" %%i in ("情歌-经典-黄灿-黄玫瑰.mp3") do (echo %%i)
我直接在cmd中打,所以是
for /f "tokens=2,* delims=-" %i in ("情歌-经典-黄灿-黄玫瑰.mp3") do (echo %i)
并不能显示 经典-黄灿-黄玫瑰.mp3
显示的是 经典
也就是说 ,*不起作用

TOP

本帖最后由 lyonamstrong 于 2016-8-29 14:01 编辑

还想问问清楚

单个部分显示的实现了:
for /f "delims=、,-,. tokens=3" %a in (110.txt) do echo %a

单个部分一直到结尾显示也实现了:
for /f "delims=、,-,. tokens=2*" %a in (110.txt) do echo %a%b

但是显示当中几项的却存疑:
for /f "delims=、,-,. tokens=23" %a in (110.txt) do echo %a%b 这样无法实现
for /f "delims=、,-,. tokens=2,3" %a in (110.txt) do echo %a,%b 这样实现了,但是间隔号不是原来的“-”而是改成了“,”
我想请问有什么办法直接保留原来的间隔符号不变?

还有如果是5部分,那tokens=1245如何实现?我试过了,12或45都无法实现。

TOP

please
问完这个我就不问了

TOP

回复 13# happy886rr


    阿里嘎多!

TOP

返回列表