execution commande sh et shell
Bonjour,
J'essaye de récupérer les infos d'un média avec mediainfo (installation cli)
J'utilise ce code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public static void main(String[] args) throws IOException, InterruptedException {
boolean isWindows = System.getProperty("os.name")
.toLowerCase().startsWith("windows");
try{
ProcessBuilder builder = new ProcessBuilder();
if (isWindows) {
builder.command("cmd.exe", "/c", "dir");
} else {
builder.command("sh", "-c", "cd /Users/sebv/Downloads && mediainfo foo.mkv >>t.txt");
}
builder.directory(new File(System.getProperty("user.home")));
Process process = builder.start();
StreamGobbler streamGobbler =
new StreamGobbler(process.getInputStream(), System.out::println);
Executors.newSingleThreadExecutor().submit(streamGobbler);
int exitCode = process.waitFor();
assert exitCode == 0;
}catch (Exception e) {
System.out.println(e.toString());
}
}
private static class StreamGobbler implements Runnable {
private InputStream inputStream;
private Consumer<String> consumer;
public StreamGobbler(InputStream inputStream, Consumer<String> consumer) {
this.inputStream = inputStream;
this.consumer = consumer;
}
@Override
public void run() {
new BufferedReader(new InputStreamReader(inputStream)).lines()
.forEach(consumer);
}
} |
mais mon fichier t.txt reste vide. La commande fonctionne car lorsque j'ouvre une fenetre terminal et que je tape
Code:
cd /Users/sebv/Downloads && mediainfo foo.mkv >>t.txt
j'ai bien toutes les infos dans mon fichiers t.txt.
Quand je remplace la commande
Code:
cd /Users/sebv/Downloads && mediainfo foo.mkv >>t.txt
par
Code:
cd /Users/sebv/Downloads && ls >>t.txt
dans mon fichier t.txt il y a bien rempli avec tout les éléments.
Si quelqu'un a une petite idée.
Merci