Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何仅在命令为单行文本时获取其输出?_Batch File_Variables - Fatal编程技术网

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