0

このコードを使用して:

   private String executeCommand(String cmd ) {

    Process p;
    try {
        p = Runtime.getRuntime().exec(cmd);
        BufferedReader br = new BufferedReader(
            new InputStreamReader(p.getInputStream()));

        while ((commandlineOutput = br.readLine()) != null){
                System.out.println("line:" + commandlineOutput);
             }
        p.waitFor();
                System.out.println (p.exitValue());

        p.destroy();
    } catch (Exception e) {}

  }
return commandlineOutput;
}

次の問題が発生します。出力を生成するすべてのコマンドは正常に実行されますが、出力を生成しないコマンドは実行されません。たとえば、rm *.jpg は機能していませんが、mkdir は違いがわかりません。

私はかなりの初心者で、かなり長い間グーグルで検索しましたが、この特定の問題については言及されていません。助けてくださいありがとう

4

2 に答える 2

0

ErrorStream に移動するエラーがある場合は、それも添付する必要があります。

BufferedReader bre = new BufferedReader
        (new InputStreamReader(p.getErrorStream()));
于 2013-08-24T02:17:03.173 に答える
0

Linux で実行するrm *と、シェルが解釈し、*. Java では、同じシェルが実行*されていないため、 はワイルドカードとして解釈されません。

hereで指摘されているように、cmd入力からターゲット/作業ディレクトリを抽出して、次のようにします。

File[] files = new File(<directory>).listFiles();
for(File file : files){
  if(file.getAbsolutePath().endsWith(".jpg")){
      //perform delete
  }
}

または、試すこともできます(現在Linuxボックスを持っていないため、テストされていません):

String[] command = new String[] {"rm", "*.jpg"}
p = Runtime.getRuntime().exec(command);
于 2013-08-24T02:17:28.487 に答える