Board logo

标题: [文本处理] 请教大大这个批处理 eol=- 为什么就能把后面的全部去除 [打印本页]

作者: mango    时间: 2018-1-22 00:35     标题: 请教大大这个批处理 eol=- 为什么就能把后面的全部去除

批处理:
  1. for /f "eol=- tokens=1 delims= " %%i in (result.txt) do echo %%i>>s1.txt
复制代码
Result.txt文件内容:
  1. -------------------------------------------------------------------------------
  2. Performing Time: 1/21/2018 7:57:42 --> Normal Scan: About To Scan 389120 IP Using 1024 Threads
  3. -------------------------------------------------------------------------------
  4. Performing Time: 1/21/2018 7:58:29 --> Normal Scan: About To Scan 389120 IP Using 1024 Threads
  5. 172.87.192.0     6379  Open            
  6. 172.87.192.4     6379  Open            
  7. 172.87.192.1     6379  Open            
  8. 172.87.192.3     6379  Open            
  9. 172.87.192.6     6379  Open            
  10. 172.87.192.2     6379  Open            
  11. 172.87.192.5     6379  Open            
  12. 172.87.192.7     6379  Open            
  13. 172.87.192.9     6379  Open            
  14. 172.87.192.10    6379  Open            
  15. 172.87.192.8     6379  Open        
复制代码
最后得到的s1.txt
  1. Performing
  2. Performing
  3. 172.87.192.0
  4. 172.87.192.4
  5. 172.87.192.1
  6. 172.87.192.3
  7. 172.87.192.6
  8. 172.87.192.2
  9. 172.87.192.5
  10. 172.87.192.7
  11. 172.87.192.9
  12. 172.87.192.10
  13. 172.87.192.8
复制代码
我想了解的问题:
eol=- 这里只将带 - 的行内容全部去除,但是没有发现其他哪一点还可以同时去除: 1/21/2018 7:57:42 --> Normal Scan: About To Scan 389120 IP Using 1024 Threads
以及去除每一行的 6379  Open
作者: mango    时间: 2018-1-22 00:37

tokens=1 delims=

这两个参数似乎没什么作用?我把这两个去掉后执行得到的结果是一样的,我就搞不懂是什么原理能去掉其他那些内容
作者: Batcher    时间: 2018-1-22 08:50

tokens=1 表示只获取第一列
如果省略这个参数,默认也是只获取第一列

参考:http://bbs.bathome.net/thread-2189-1-1.html
作者: mango    时间: 2018-1-22 12:21

回复 3# Batcher


那都不是重点,其实我想了解的问题是:

eol=- 这里只将带 - 的行内容全部去除,但是没有发现其他哪一点还可以同时去除: 1/21/2018 7:57:42 --> Normal Scan: About To Scan 389120 IP Using 1024 Threads
以及去除每一行的 6379  Open
作者: Batcher    时间: 2018-1-22 13:27

回复 4# mango


Performing Time: 1/21/2018 7:57:42 --> Normal Scan: About To Scan 389120 IP Using 1024 Threads
Performing Time: 1/21/2018 7:58:29 --> Normal Scan: About To Scan 389120 IP Using 1024 Threads
172.87.192.0     6379  Open
172.87.192.4     6379  Open

蓝色字体是第一列
tokens=1的作用是获取第一列(换句话说,除了第一列,其他列删除)
这样能理解吗?
作者: Blitz    时间: 2018-1-22 13:27

回复 4# mango


    delims= ,作用是以空格为分割,把所有内容分割为一列一列的,比如下面的所有的1是第一列,所有的2是第二列,以此类推:
  1. 1 2 3 4
  2. 1 2 3 4
  3. 1 2 3 4
  4. 1 2 3 4
复制代码
tokens=1,作用是取以空格为分割后的第一列数据,也就是所有的1
把这两个去掉,结果还是一样是因为默认就是tokens=1 delims=
作者: mango    时间: 2018-1-22 14:55

本帖最后由 mango 于 2018-1-22 14:56 编辑

原来是这么回事,现在明白了,只要是用空格隔开的就叫做第二列了,只保留第一个空格之前的内容,感谢大神耐心解答




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2