在命令提示符下为来自Java的文件运行Windows Scanner
我正在尝试从Java以编程方式扫描文件,并希望在命令行上进行扫描 我可以在命令行中直接执行此操作,简单地导航到文件夹并执行命令:在命令提示符下为来自Java的文件运行Windows Scanner,java,windows,cmd,command-prompt,processbuilder,Java,Windows,Cmd,Command Prompt,Processbuilder,我正在尝试从Java以编程方式扫描文件,并希望在命令行上进行扫描 我可以在命令行中直接执行此操作,简单地导航到文件夹并执行命令: c:\Users\3XXXXX8\Desktop>cd "C:\\Program Files\\Windows Defender" && MpCmdRun.exe -Scan -ScanType 3 -File "C:\\UploadedFiles\\file" Scan starting... Scan finished. Scanning C
c:\Users\3XXXXX8\Desktop>cd "C:\\Program Files\\Windows Defender" && MpCmdRun.exe -Scan -ScanType 3 -File "C:\\UploadedFiles\\file"
Scan starting...
Scan finished.
Scanning C:\\UploadedFiles\\file found no threats.
我希望它能从Java上运行。
我对应该为进程提供数据的字符串感到困惑。我找到了一些地方,我应该在命令字符串中输入\c,因为它是widows。但这不起作用。程序如下。
字符串[]命令需要修复
import java.io.*;
public class CmdTest {
public static void main(String[] args) throws Exception {
String [] commands = {
"cmd /c \"cd \"C:\\Program Files\\Windows Defender\" && MpCmdRun.exe -Scan -ScanType 3 -File \"C:\\UploadedFiles\\file\"\""
}
ProcessBuilder builder = new ProcessBuilder(commands);
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ( (line = r.readLine()) != null) {
System.out.println(line);
}
}
}
请帮忙
我为命令字符串尝试过的其他一些组合:
String [] commands = { "cmd.exe", "/c", "cd \"C:\\Program Files\\Windows Security Client\"",
"MpCmdRun.exe -Scan -ScanType 3 -File C:\\UploadedFiles\\" + file.getName()
};
及
不知道该如何打破它
String [] commands = {
"\"C:\\Program Files\\Windows Defender\\MpCmdRun.exe\" -Scan -ScanType 3 -File \"C:\\UploadedFiles\\file\""
};
这对我有用
我不需要cmd/c我听说如果可以避免的话,我们不应该使用getRuntime。造成问题。我还需要运行多个命令。所以,不幸的是,不,它不能回答我的问题。哪些问题?具体点。一个接一个地运行这些进程。我算出来了。我想你应该看看这篇JavaWorld文章:
String [] commands = {
"\"C:\\Program Files\\Windows Defender\\MpCmdRun.exe\" -Scan -ScanType 3 -File \"C:\\UploadedFiles\\file\""
};