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

[文本处理] 求助批处理for tokens去除某符号后面内容无法输出到文本中

下面是一个log.txt文件
C:\NTtest\logcompare>net use s: /delete /y
C:\NTtest\logcompare>net use s: [url=file://\\10.20.25.115\nttest]\\10.20.25.115\nttest[/url]
The command completed successfully.

C:\NTtest\logcompare>copy s:\cshdpm5.txt s:\logcompare\cshdpm5.txt
        1 file(s) copied.
C:\NTtest\logcompare>del s:\logcompare\cshdpm5.txt
C:\NTtest\logcompare>s:
S:\>RTOPCB /S dwn.DTF
IBM iSeries Access for Windows
Version 5  Release 3  Level 0
Transfer data from iSeries
(C) Copyright IBM Corporation and Others 1984, 2003.  All rights reserved.
U.S. Government Users Restricted Rights - Use, duplication or disclosure
  restricted by GSA ADP Schedule Contract with IBM Corp.
Licensed Materials - Property of IBM
Transfer file: dwn.DTF
Receive completed successfully.
Rows transferred: 41
S:\>rfrompcb /s upload.dtt
IBM iSeries Access for Windows
Version 5  Release 3  Level 0
Transfer data to iSeries
(C) Copyright IBM Corporation and Others 1984, 2003.  All rights reserved.
U.S. Government Users Restricted Rights - Use, duplication or disclosure
  restricted by GSA ADP Schedule Contract with IBM Corp.
Licensed Materials - Property of IBM
Transfer file: upload.dtt
Send completed successfully.
Rows transferred: 41

我想要在蓝色字体的2行冒号以后的数字不显示,其他所有的输出到comparelog中去,写了如下命令:
for /f "delims=:  tokens=17" %%i in (log.txt) do echo %%i  > comparelog.txt
但是没有comparelog文件生成,是我命令用法不对吗?谢谢!



[ 本帖最后由 leon 于 2009-3-31 13:58 编辑 ]

请问楼主为何要使用tokens=17呢,它在此处的作用是什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

额..本来我是想第17行就是蓝色字体的第一个地方,然后那一行只取:之前的内容,其他行内容不变还正常输出

TOP

回复 3楼 的帖子

可以先去学习一下tokens的用法:http://bbs.bathome.net/thread-2189-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我倒是有另一种办法能达到同样目的
setlocal ENABLEDELAYEDEXPANSION
set STR1=Rows transferred: 41
SET STR2=Rows transferred:
for /f "tokens=* delims=" %%a in (log.txt) do (
set n=%%a
set n=!n:%STR1%=%STR2%!
echo !n!>>comparelog
)

TOP

谢谢!学习下!

TOP

鉴于文本中有数字41的的行就是蓝色字体部分的两行,所以用字符串替换就可以。
setlocal enabledelayedexpansion
for /f "delims=" %%a in (log.txt) do set var=%%a&echo !var:41=!>>logcompare.txt
pause
Still with wax

TOP

返回列表