java运行时。exec(字符串)限制字符串
我试图使用Java函数Runetime.exec(String)
在windows 7计算机的启动文件夹中运行一个程序,如下所示:
Runtime.getRuntime().exec(runner.getPath() + "\\run.bat");
当我运行这个命令时,我得到一个错误,说这个命令无法运行:
Exception in thread "main" java.io.IOException: Cannot run program ""C:\Users\ly
ndsey\AppData\Roaming\Microsoft\Windows\Start": CreateProcess error=2, The syste
m cannot find the file specified
如您所见,文件名在“\Windows\Start”处被截断,此时它应该继续“\Windows\Startup\run.bat”。。我有没有别的选择
# 1 楼答案
应该避免使用} ,它假定第一个数组元素是命令,其余元素是参数
exec(String)
方法,该方法试图将整个字符串解析为command+参数。安全选项是^{那么,写作
是传达正确信息的可靠方式
# 2 楼答案
考虑到
runner
是一个文件实例,这应该是可行的它使用
Desktop
类而不是Runtime
,因此您不必将File
(runner)转换为它的String
表示(这很容易出错)。Runner现在使用“原样”作为要执行的“run.bat”的父目录Desktop
类的其他优点:现在可以打开任何需要的文件