将输出文件放入var

时间:2014-04-14 14:15:19

标签: batch-file cmd

我有简单的.bat文件

%2 >file.tmp
set /p %1=<file.tmp

我希望以这种方式使用这个脚本:

putVar var1 command.bat

它应该将输出command.bat的第一行输入变量var1 之后我应该能够使用var1变量,例如

putVar var1 command.bat
echo %var1%

不幸的是,这不起作用。 怎么做这个工作?也许有一些更简单的方法?

1 个答案:

答案 0 :(得分:0)

您的问题是,在示例代码中,您运行的命令(command.bat)是批处理文件,它是从批处理文件中调用的,如果是从批处理文件调用另一个批处理文件如果不使用call命令,则执行不会返回给调用者批处理。

要保留语法,您可以使用

(cmd /c "%~2")>file.tmp
set /p "%~1="<file.tmp

生成cmd的第二个实例来处理命令,将其输出重定向到临时文件,然后将文件(只有command.bat输出的第一行)读入变量。

更简单的方法是使用for /f

for /f "delims=" %%a in ('%~2') do set "%~1=%%a"

或多或少地做同样的工作。运行命令检索输出,在这种情况下,迭代命令的输出,将command.bat输出的每一行分配给变量。显然,只有最后一行将存储在变量中,因为循环将在每次迭代中覆盖其值。