【问题标题】:Bat file doesn't executed as expected when executed by javabat文件在java执行时没有按预期执行
【发布时间】:2014-07-10 04:47:03
【问题描述】:

我写了一个bat文件来安装mysql。通过双击执行时它运行良好,但是当它由java程序执行时它提示并消失,没有任何反应。有什么建议吗?

这是我的 bat 文件:

set cur=%cd%
set pro=%PROGRAMFILES(x86)%
pause
if exist "%pro%"  goto yes86
set pro=%PROGRAMFILES%

:yes86
if exist "%pro%\MySQL\MySQL Server 5.5\bin\mysql.exe" goto yesmysql

msiexec /i "mysql-5.5.13.msi" /passive INSTALLDIR="%pro%\MySQL\MySQL Server 5.5"

cd /d %pro%\MySQL\MySQL Server 5.5\bin

MySQLInstanceConfig.exe -i -q "-lC:\mysql_install_log.txt" "-nMySQL Server 5.5" "-       p%pro%\MySQL\MySQL Server 5.5" -v5.5.13 "-t%pro%\MySQL\MySQL Server 5.5\my-template.ini" "-c%pro%\MySQL\MySQL Server 5.5\my.ini" ServerType=DEVELOPMENT DatabaseType=MIXED ConnectionUsage=OLTP Port=3306 ServiceName=Mysql Charset=utf8 RootPassword=abc
:yesmysql

这是我的 java 代码:

Runtime.getRuntime().exec("cmd /c start MySQL.bat");

【问题讨论】:

  • 我的 bat 文件完美地自行运行并安装了 mysql,但没有使用 java 程序,这是我遇到的问题。
  • 当通过 ... 启动命令时(比如你的用例中的 java),永远不要对环境变量有信心。使用所有命令的完整路径(至少 MySQLInstanceConfig)并监视您使用的其他环境变量(echo "%pro%" > c:\accessible\path\spy.txt)。

标签: java mysql batch-file


【解决方案1】:

假设您的 bat 文件在 Java 之外工作,只需更改此设置

Runtime.getRuntime().exec("cmd /c start MySQL.bat");

Runtime.getRuntime().exec("MySQL.bat");

【讨论】:

  • 我尝试了您的解决方案,但没有成功。当我在批处理文件中添加暂停时,它显示system cannot find path specified
  • 然后指定c:/mypath/mysql.bat的路径(windows对文件名不区分大小写)。
【解决方案2】:

我建议试试这个:

List cmdAndArgs = Arrays.asList({"cmd", "/c", "MYSQL.bat"});
File dir = new File("C:/Program Files/MySQL/MySQL Server 5.5/bin/bat");

ProcessBuilder pb = new ProcessBuilder(cmdAndArgs);
pb.directory(new File(dir));
Process p = pb.start();

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多