标题: [文本处理] [已解决]批处理for命令tokens能提取倒数第一段吗? [打印本页]
作者: asd821089612 时间: 2011-7-22 21:29 标题: [已解决]批处理for命令tokens能提取倒数第一段吗?
本帖最后由 asd821089612 于 2011-7-23 13:34 编辑
学习了for 命令,想问一个问题
如果指定delims=\ 想要截取每行的最后一节吗,该怎么写命令?
作者: CrLf 时间: 2011-7-22 21:32
本帖最后由 CrLf 于 2011-7-22 21:52 编辑
楼主举的这个例子真是太...巧了
以 \ 为分隔符取末尾字符时,可以利用 %%~nxa:- @echo off
- set "str=123\abc\QWER\!@#$\test "
- for /f "delims=" %%a in ("%str%") do echo %%~nxa
- pause
复制代码
不过尾部的空格会被去掉,解决方法是让它变得更像文件名...- @echo off
- set "str=123\abc\QWER\!@#$\test "
- for /f "delims=" %%a in ("%str%.$") do echo @%%~na@
复制代码
作者: Batcher 时间: 2011-7-22 21:40
批处理for命令获取倒数第二列
http://bbs.bathome.net/thread-473-1-1.html
批处理for命令获取最后一列
http://bbs.bathome.net/thread-9742-1-1.html
http://bbs.bathome.net/thread-13000-1-1.html
作者: asd821089612 时间: 2011-7-22 21:58
楼主举的这个例子真是太...巧了
以 \ 为分隔符取末尾字符时,可以利用 %%~nxa,不过尾部的空格会被去掉
还是不太懂,这个%%~nxa是什么东西,没见过
我原来有一个txt文件,里面装了一大堆文件的完整目录,想提出文件名,所以才这么问
那以后如果分隔符不是\ 那又该怎么办
作者: asd821089612 时间: 2011-7-22 22:01
3楼发的网站也看过了,其中是一种方法是将分隔符全部改为\ 然后再用 %%~nxa 有什么别的办法不用这么麻烦?
作者: Batcher 时间: 2011-7-22 22:07
4# asd821089612
请在顶楼给出部分数据以便测试
作者: mxxcgzxxx 时间: 2011-7-22 23:13
还是不太懂,这个%%~nxa是什么东西,没见过
我原来有一个txt文件,里面装了一大堆文件的完整目录,想提出文件名,所以才这么问
那以后如果分隔符不是\ 那又该怎么办
asd821089612 发表于 2011-7-22 21:58
%%~nxa就是你想要的文件名啊。FOR中会自动识别文件名格式的多学习FOR命令哦 不过教学中是以%%I为例,他们是以%%a为例区别在这呵
%%~nxI和%%~nxa是不是很像啊
作者: asd821089612 时间: 2011-7-23 08:18
本帖最后由 asd821089612 于 2011-7-23 08:24 编辑
懂了,又增长了一点知识
那如果分隔符不是\ 除了我五楼提出的方法,还有什么方法呢
比如一个文本文件复制代码
要怎么提取ggg和fff呢
作者: mxxcgzxxx 时间: 2011-7-23 13:12
本帖最后由 mxxcgzxxx 于 2011-7-23 13:13 编辑
8# asd821089612
由于FOR/F对读取的列要手工设定,对于未知列数是无法自动读取到的,
还有一个方法就是双FOR套
第一个FOR 读行
第二个FOR分列读这行取值,保留最后一个值就行了
作者: asd821089612 时间: 2011-7-23 13:33
嗯,这样确实是可以的,解决了,谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |