2014-09-19 86 views
1

有很多堆栈溢出文章与此相关,但没有直接的答案。Windows批处理:从EXEC输出到SET VARIABLE输出空间的输出

此命令将输出一堆话

OutputVariable.exe %FILEPATH% 

输出:

Mary had a little lamb 

在一个批处理文件,这里是如何得到的输出到一个变量

for /f %%i in ('OutputVariable.exe %FILEPATH%') do SET SENTENCE=%%i 
ECHO %SENTENCE% 

输出:

Mary 

通常,FOR命令会在空格处中断。帮帮我!

回答

2
for /f "delims=" %%i in ('OutputVariable.exe %FILEPATH%') do SET "SENTENCE=%%i" 
ECHO %SENTENCE% 

; , = <space> <tab>是在分批和在for /f结果的标准分隔符是由它们自动分裂。要停用分隔符,您需要"delims="for /f选项。

+0

我来补充,他可以通过他们循环呼应的每个值: FOR/F %%我在( 'OutputVariable.exe%FILEPATH%')做回声% %i – 2014-09-19 19:22:25

+0

@NathanRice - 不完全。在'FOR/F'中,每个标记都应该在'tokens = 1,2,..'的选项中设置,否则它将无法访问。在普通的'FOR'中,可以迭代在每个元素上。 – npocmaka 2014-09-19 19:24:52

+0

'“delims =”'是的。谢谢! – 010110110101 2014-09-20 01:17:26

0

我建议:

@echo off 

for /f "tokens=*" %%i in ('OutputVariable.exe %FILEPATH%') do SET SENTENCE=%%i 
ECHO %SENTENCE%