如何使用Java代码从命令提示符更改目录

时间:2015-05-12 10:34:59

标签: java

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上检查了之前回答的所有问题。但他们都没有帮助我。请验证代码,如果需要更正,请告诉我。提前致谢!!。

2 个答案:

答案 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() + "\"";