Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由java执行时,Bat文件未按预期执行_Java_Mysql_Batch File - Fatal编程技术网

由java执行时,Bat文件未按预期执行

由java执行时,Bat文件未按预期执行,java,mysql,batch-file,Java,Mysql,Batch File,我已经编写了一个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" got

我已经编写了一个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文件在Java之外工作,只需更改此选项

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


我建议试试这个:

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();

它将帮助您:我的bat文件本身运行良好,并安装mysql,但不使用java程序,这是我遇到的问题。。。在你的用例中说java永远不要相信环境变量。对所有命令使用完整路径,至少是MySQLInstanceConfig和spy echo%pro%>c:\accessible\path\spy.txt以及您使用的其他环境变量。我尝试了您的解决方案,但没有成功。当我在批处理文件中添加pause时,它显示系统找不到指定的路径。然后指定c:/mypath/mysql.bat的路径。windows对文件名不区分大小写。
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();