我已经通过一些简单的代码完成了许多关于执行外部程序(例如iTunes)的研究,但这些建议从未奏效。有时没有发生任何事情,有时我收到此错误消息: English: Unable to find "Discord". Be sure the name is written correctly and try again.
我的代码如下:
try {
String name = (String) "start " + table.getValueAt(table.getSelectedRow(), table.getSelectedColumn());
ProcessBuilder p = new ProcessBuilder("cmd.exe", "cd /D %HOMEDRIVE%%HOMEPATH%/Desktop", "/c", name);
p.start();
} catch (Exception e) {
e.printStackTrace();
}
在我的示例中,我从JTable
获取外部程序的名称,这部分工作正常。 ProcessBuilder
首先将目录更改为桌面。然后外部程序应该由start <program name>
命令执行。使用此代码,我收到了上述错误消息。
如果您有cmd解决方案,请包括将目录更改为桌面。
答案 0 :(得分:2)
您应该将每个参数作为单个条目传递给ProcessBuilder
。在您当前的代码中,您有时会将多个参数放在一起(例如cd /D %HOME...
)。尝试传递每个参数作为它自己的参数,包括要启动的命令及其参数:
String name = (String) table.getValueAt(table.getSelectedRow(), table.getSelectedColumn());
ProcessBuilder p = new ProcessBuilder("cmd.exe", "cd", "/D", "%HOMEDRIVE%%HOMEPATH%/Desktop", "/c", "start", name);
答案 1 :(得分:0)
根据:cmd.exe,
/ D忽略注册表AutoRun命令 HKLM | HKCU \ Software \ Microsoft \ Command Processor \ AutoRun
您的意思是import React from 'react'
import { render } from 'react-dom'
import { Provider as ReduxProvider } from 'react-redux'
import { Provider as FelaProvider } from 'react-fela'
import { createStore } from 'redux'
import todoApp from './reducers'
import App from './components/App'
let store = createStore(todoApp)
render(
<ReduxProvider store={store}>
<FelaProvider>
<App />
</FelaProvider>
</ReduxProvider>,
document.getElementById('root')
)
不是start.exe /D
吗?
并且他们也告诉了
如果指定了/ C或/ K,则命令行的其余部分将作为新shell中的立即命令处理。由命令分隔符“&amp;”分隔的多个命令或'&amp;&amp;'如果被引号包围,则被接受。
您的意思是cmd.exe /D
吗?