public void VerifyFiles(File dir) throws IOException{
File[] files = dir.listFiles();
for (File file : files) {
//Check if directory
if (file.isDirectory()) {
//Recursively call file list function on the new directory
VerifyFiles(file);
} else {
try {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd \" C:\\Users\\e843778\\Documents\\NetBeansProjects\\EncryptedFiles\" && C:\\Program Files\\PGP Corporation\\PGP Desktop");
builder.redirectErrorStream(true);
Process p = builder.start();
Runtime rt = Runtime.getRuntime();
String query2 = "cmd /c pgpnetshare -v " + "\"" + file + "\"";
Process proc = rt.exec(query2);
proc.waitFor();
System.out.println("Executing for: " + file);
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
String s1 ="";
while ((line = in.readLine()) != null)
{
System.out.println(line);
if(line.contains("All files and folders are encrypted"))
s1+=line;
}
System.out.println(s1);
}
我必须使用命令提示符为给定目录中的所有文件运行pgpnetshare命令。为此,首先我需要将当前目录更改为其他目录。但我无法使用以下代码更改目录。我已经在Stackoverflow.com上检查了之前回答的所有问题。但他们都没有帮助我。请验证代码,如果需要更正,请告诉我。提前致谢!!。
答案 0 :(得分:1)
这应该有效:
Process process=Runtime.getRuntime().exec(query2,
null, new File("directory path"));
来自文档:
Process exec(String[] cmdarray, String[] envp, File dir)
在具有指定环境和工作目录的单独进程中执行指定的命令和参数。
您始终可以创建.bat文件并执行该文件。
答案 1 :(得分:0)
你应该使用file.getAbsolutePath() 喜欢
String query2 = "cmd /c pgpnetshare -v " + "\"" + file.getAbsolutePath() + "\"";