【问题标题】:Executing Batch file in java gives unexpected results在java中执行批处理文件会产生意想不到的结果
【发布时间】:2017-05-02 07:53:41
【问题描述】:

我有以下批处理文件:-

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 编译器,它在我的计算机路径中定义

【问题讨论】:

  • gcc 在路径上吗?
  • @pringi 是的,这就是为什么直接执行它可以正常工作的原因
  • 尝试在 CPrun.bat 上提供 gcc 的完整路径。我不确定 Windows 如何处理 cmds 之间的环境共享
  • @pringi 完整路径给出了错误。 “C:Program....”未被识别为命令。我输入的路径不正确吗?
  • 你用的是cygwin吗?您确定手动运行脚本时正在生成 temp.exe 吗?

标签: java batch-file cmd environment-variables


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-10
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多