【发布时间】:2015-12-14 07:13:44
【问题描述】:
我试图弄清楚在编写批处理脚本时如何避免多个输出。目前我正在通过以下方式解析程序的输出:
@echo off
TYPE tmp.txt | findstr /R /C:"some_str_to_parse" > tmp2.txt
TYPE tmp2.txt | FOR /f "tokens=4" %%i in ('more') do echo %%i>tmp.txt
set /p some_var=<tmp.txt
TYPE tmp.txt | findstr /R /C:"some_str_to_parse" > tmp2.txt
TYPE tmp2.txt | FOR /f "tokens=4" %%i in ('more') do echo %%i>tmp.txt
set /p some_var2=<tmp.txt
echo %some_var% - %some_var2%
问题是我只想要脚本末尾的 echo 输出,没有别的。
调用批处理脚本时我得到的是:
> echo XXX 1>tmp.txt
> echo YYY 1>tmp.txt
> echo XXX - YYY <-- This is the only output i want
我怎样才能做到这一点?
提前谢谢你。
编辑:
忘了说,回声已关闭。
我想要的是解析 slik svn 客户端“svn info”命令的输出 以格式获取日期和修订号:YYYY-MM-DD-REVISION
svn info 的输出如下所示:
Path: .
Working Copy Root Path: .....
URL: https://www.....
Relative URL: ^/trunk
Repository Root: ......
Repository UUID: .......
Revision: 123
Node Kind: directory
Schedule: normal
Last Changed Author: xxx
Last Changed Rev: 123
Last Changed Date: 2015-12-11 16:56:22 +0100 (Fri, 11 Dec 2015)
【问题讨论】:
-
@echo off怎么样?或者,如果您出于任何原因不想这样做,... do @echo %%i>tmp.txt -
对我来说似乎过于复杂。您不会透露文件的内容是什么,因此难以简化。
-
除了您的代码非常复杂之外,问题来自管道
|我认为,因此打开了两个新的cmd实例,其中脚本中的@echo off有没有效果;所以` | @for /F` 和/或do @echo %%i应该避免意外的回声...
标签: windows shell batch-file