题 在批处理文件中存储Windows命令的输出


我需要将命令行的输出存储在变量中。我怎样才能做到这一点?


5
2018-03-10 13:36




重复如果 如何在Windows中的变量中获取命令的结果? 来自Stack Overflow。 - Cristian Ciupitu


答案:


提供了简单的批处理文件 test.cmd 内容如下:

echo jscott

您可以使用以下命令行将输出设置为变量:

FOR /F "tokens=*" %a in ('test.cmd') do SET OUTPUT=%a

在命令行上使用如下:

C:\>SET OUTPUT
Environment variable OUTPUT not defined
C:\>FOR /F "tokens=*" %a in ('test.cmd') do SET OUTPUT=%a
C:\>ECHO %OUTPUT%
jscott

你想要使用吗? FOR 在批处理文件中,而不是命令行,您需要更改 %a 至 %%a


7
2018-03-10 13:55



你的提示没有 > 由于某些原因使得读取命令变得更加困难,因为“C:\ SET”例如开始看起来像路径。 - Dennis Williamson
@Dennis编辑。对不起,应该使用复制/粘贴。 - jscott


这就是我这样做的方式:

vol c: > result.txt
set /p DATA=<result.txt
echo %DATA%
del result.txt

如果result.txt包含多行,则只有该文件的顶行用于%DATA%。 您还可以将result.txt转换为变量本身,例如%OUTPUT%。


3
2018-03-10 14:14





您可以将命令管道化为:

command > somefile

您在上面看到的内容将输出发送到命名文件。如果文件不存在,则创建一个。覆盖现有文件 你也可以这样做:

command >> somefile

这会将输出附加到命名文件的内容,或者如果不存在则创建文件

另见: 使用命令重定向运算符


0
2018-03-10 13:44



请您扩展您的答案,解释如何在变量中存储任何内容? - jscott
我想将输出存储在变量....我尝试这个方法,但它失败和命令的输出: commandline 1>fiel.txt 什么是“1”是什么意思?并且文件没有创建 - Mohammad AL-Rawabdeh