[英]Get a single line output from a batch script
我試圖弄清楚編寫批處理腳本時如何避免多個輸出。 目前,我以以下方式解析程序的輸出:
@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 clientsvn 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
SETLOCAL
FOR /f "tokens=1,2delims=:" %%a IN (q3426541.txt) DO (
IF "%%a"=="Last Changed Rev" SET "rev=%%b"
IF "%%a"=="Last Changed Date" SET "chgdate=%%b"&GOTO done
)
:done
SET "result=%chgdate:~1,10%-%rev:~1%"
ECHO %result%
GOTO :EOF
我使用了一個名為q3426541.txt
的文件, q3426541.txt
包含用於測試的數據。
讀取文件,標記為:
。 直到第一個:
%%a
,第二個:
或eol到%%b
。
查看%%
中的字符串是否與兩個目標匹配。 在rev
記錄最先出現的修訂,在chgdate
記錄日期數據。 找到日期數據后,終止循環(因此不再讀取文件)。
將結果設置為chgdate
的10
字符,從“字符1”開始,並以-開頭,然后在rev
的修訂rev
從“字符1”開始
請注意,批處理子字符串是從字符串的第一個字符“字符0”計算得出的。
for /f "tokens=3,4 delims=: " %%a in ('find "Last Changed" tmp.txt') do set "_%%a=%%b"
echo %_Date%-%_Rev%
甚至更好(沒有臨時文件):
for /f "tokens=3,4 delims=: " %%a in ('svn info^|find "Last Changed" ') do set "_%%a=%%b"
echo %_Date%-%_Rev%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.