2016-10-10 55 views
2

在一個批處理文件,我使用下列獲得命令的輸出中:如何僅當它是單行文本時獲取命令的輸出?

for /f %%i in ('command') do set output=%%i 

command應該輸出文本的單行線,我得到%output%預期的輸出在這種情況下。

但是,command有時會輸出幾行文本,這表示錯誤。在這種情況下,我得到%output%中的最後一個,我不知道command的確輸出了多於一行。

如何檢查command何時輸出多行文本?

注意:當有多行時,我不需要知道輸出是什麼;我只需要知道輸出的不止一行。

回答

2
set "output=" 
for /f %%i in ('command') do if defined output (
echo "error" 
) else (
set output=%%i 
) 

使用if defined解釋目標變量

+0

完全按預期工作,謝謝。 – shrike

-1

的運行時的狀態,或者......

for /f %%i in ('command 2^>nul') do set output=%%i 

很難說什麼時候我們不知道什麼命令或事實錯誤輸出是

+0

我不明白'2 ^> nul'的含義?嘗試時,它被解釋爲一個命令參數... – shrike

+0

因爲你的命令和輸出是一個祕密,所以很難給你一個確定的答案。如果你需要幫助,你必須提供足夠的信息來獲得適當的解決方案。 – Compo

+0

正常的語法是'command 2> nul';如果用'for/F'循環解析,則需要轉義重定向操作符'>',因爲否則會檢測整個'for/F'命令行。無論如何,這對於'output'來說是完全沒有用的,因爲'for/F'不會捕獲錯誤文本,它被'2> nul'所掩蓋...... – aschipfl

0
cmd.exe /k "for /f %%i in ('command') do set output=%%i" > C:/Users/%username%/Desktop/Output.txt 
相關問題