2017-08-29 44 views
0

我里面有我的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
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) 

\是窗户的路径分隔; /是开关指示器。

你似乎对set gccpath线尾随空间。这将包含在分配的值中。带引号的格式旨在防止这种确切的事情 - 尾随空格不包含在赋值中。

@set(或任何其它)语句不是必需的。 @echo off是传统的批次开始 - 它的意思是“关闭echo并且不要echo这个声明”。

定量器很少用^终端继续行。我建议反对它。

额外if not defined语句门控变量的set婷确保变量设置,但一旦如果没有进一步的行(你还没有告诉我们从gcc -v典型输出)set被忽略,否则会被什么是下一行

+0

不过它是未来不会发现被覆盖。 – Nandha

+0

另外我试着用另一个例子,当我在命令提示符中使用'ver'命令时,它给出输出'Microsoft Windows [Version 6.1.7601]'。所以在上面提到的for循环中,我给了'ver'而不是'gcc command',现在versionInfo只有微软而不是完整的信息。我们如何储存整个信息? – Nandha

+0

'ver'是返回操作系统版本的标准批处理命令,与当前问题无关。正如我所说的,“你没有向我们展示gcc -v'的典型输出结果,如果没有这些数据,我们就会变成猜谜游戏。请将执行命令'gcc -v'的完整输出发布到原始文章中,以便我们可以正确分析问题。 – Magoo

相关问题