在java中执行批处理文件会产生意外结果

时间:2016-12-16 13:40:33

标签: java batch-file cmd environment-variables

我有以下批文件: -

gcc temp.c -o temp.exe
pause

此批处理文件编译 .c 文件。通过双击执行时,此批处理脚本运行正常,但是当我为此目的使用java时,它给了我一个错误。以下是代码

Process p = Runtime.getRuntime().exec("cmd /c start CPrun.bat");
p.waitFor();

CRun.bat 是批处理文件的名称。

以下是cmd上的错误

'gcc' is not recognized as an internal or external command, 
operable program or batch file.

请注意,gcc是我的C编译器,它在我的电脑路径中定义

1 个答案:

答案 0 :(得分:1)

指定完整路径应该可以解决问题。但不要忘记用双引号" 包围它。在批处理中,建议用双引号括住所有路径,因为在Windows路径中很可能包含空格。如果没有双引号,空格将作为分隔符处理,在不同的部分制动路径(就好像它们是不同的参数/可执行文件)。

关于环境变量:您只能访问系统传递给JVM的环境变量。要查看这些变量,您可以使用System.getenv()它将字符串返回到字符串映射,并在其值上映射环境变量名称。我创建了a little demo,其中打印了所有可用的环境变量。