我在'D:/ Cygwin / bin'中有我的gcc编译器。 我创建了一个批处理文件,用于派生gcc的版本号。
set gccPath=D:/Cygwin/bin
for /f %%i in ('%gccPath%/gcc.exe -v') do @set versionInfo=%%i
if defined versionInfo (echo found) else ^
echo not found
这里我试图将语句gcc -v
的输出存储到变量versionInfo
。但是当我运行这个批处理文件时,命令的输出不会存储在变量中。如何将信息存储到变量versionInfo
?
答案 0 :(得分:1)
set "gccPath=D:\Cygwin\bin"
set "versioninfo="
for /f %%i in ('%gccPath%\gcc.exe -v') do if not defined versioninfo set versionInfo=%%i
if defined versionInfo (echo found) else (echo not found)
\
是Windows上的路径分隔符; /
是开关指示符。
您似乎在set gccpath
行上有一个尾随空格。这将包含在分配的值中。带引号的格式旨在防止这种情况发生 - 尾随空格不包含在分配的值中。
@
(或任何其他)声明中不需要set
。 @echo off
是批处理的传统开头 - 它意味着“关闭echo
而不会echo
此声明”。
Batchers很少使用^
终端继续线路。我建议不要这样做。
关于变量if not defined
的额外set
语句确保变量设置但是一次并且如果没有其他行(您没有向我们展示{{1}的典型输出1}})忽略gcc -v
,否则它将被下一行的任何内容覆盖