我有简单的.bat文件
%2 >file.tmp
set /p %1=<file.tmp
我希望以这种方式使用这个脚本:
putVar var1 command.bat
它应该将输出command.bat的第一行输入变量var1 之后我应该能够使用var1变量,例如
putVar var1 command.bat
echo %var1%
不幸的是,这不起作用。 怎么做这个工作?也许有一些更简单的方法?
答案 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
输出的每一行分配给变量。显然,只有最后一行将存储在变量中,因为循环将在每次迭代中覆盖其值。