Batch file 如何仅在命令为单行文本时获取其输出?
在批处理文件中,我使用以下命令获取命令的输出:Batch file 如何仅在命令为单行文本时获取其输出?,batch-file,variables,Batch File,Variables,在批处理文件中,我使用以下命令获取命令的输出: for /f %%i in ('command') do set output=%%i 命令应该输出一行文本,在这种情况下,我将在%output%中获得预期的输出 但是,命令有时会输出几行文本,这表示错误。在这种情况下,我得到了%output%中的最后一个命令,我不知道命令的输出不止一行 当命令输出多行文本时,如何检查 注:当有几行时,我不需要知道输出是什么;我只需要知道输出的不止一行 set "output=" for /f %%i in ('
for /f %%i in ('command') do set output=%%i
命令
应该输出一行文本,在这种情况下,我将在%output%
中获得预期的输出
但是,命令
有时会输出几行文本,这表示错误。在这种情况下,我得到了%output%
中的最后一个命令,我不知道命令
的输出不止一行
当命令
输出多行文本时,如何检查
注:当有几行时,我不需要知道输出是什么;我只需要知道输出的不止一行
set "output="
for /f %%i in ('command') do if defined output (
echo "error"
) else (
set output=%%i
)
使用如果已定义
解释目标变量的运行时状态这一事实…或者
for/f%%i in('command 2^>nul')do set output=%%i
很难说当我们不知道什么是命令或错误输出时我不理解
2^>nul
的含义?尝试时,它被解释为一个命令参数……因为您的命令和输出是一个秘密,所以很难给您一个明确的答案。如果需要帮助,您必须提供足够的信息以获得适当的解决方案。正常语法为command 2>nul
;如果由for/F
循环解析,则需要转义重定向操作符
,否则它将在整个for/F
命令行中被检测到。无论如何,这对于输出
来说是完全无用的,因为for/F
无论如何都不会捕获错误文本,这被2>nul
所支持……我说的“对于输出
来说是无用的”,这正是OP感兴趣的;一般来说,它当然不是无用的…@Compo@aschipfl:命令
不会向stderr
输出任何内容;我写的是,当它输出几行(到stdout)时,它被认为是一个错误:“有时输出几行文本,这表示一个错误”
cmd.exe /k "for /f %%i in ('command') do set output=%%i" > C:/Users/%username%/Desktop/Output.txt