获取gcc版本并将其存储在批处理文件中的变量中

时间:2017-08-29 07:45:07

标签: batch-file gcc

我在'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

1 个答案:

答案 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,否则它将被下一行的任何内容覆盖