2016-08-12 4 views
0

Ich versuche, eine Batch-Skript über den Knoten des spawn() wie auszuführen, was unten dargestellt:Knoten child_process: Verschachtelte Batch-Dateien

const spawn = require('child_process').spawn; 
const script = require.resolve('./script_1.bat'); 
const bat = spawn(script); 

/* program runs properly (for the most part) */ 
bat.stderr.on('data', (data) => { 
    console.log('stdErr: ' + data); 
}); 

bat.on('exit', (code) => { 
    console.log('Child exited with code' + code); 
}); 

Das Problem ist, dass script_1.bat hat einen call Befehl script_2.bat im selben Verzeichnis:

`call script_2.bat` 

Wenn ich script_1.bat in der Befehlszeile ausführen, funktioniert es gut. Allerdings, wenn ich script_1.bat vom Knoten laufe, sehe ich in der Konsole:

stdErr: 'script_2.bat' is not recognized as an internal or external command, operable program or batch file. 

Ich habe mein Bestes getan, durch die Knoten Kind Prozessdokumentation zu graben, aber ich konnte keine explination für finden, warum dies geschehen würde. Gibt es eine Möglichkeit, verschachtelte Batch-Dateien in die spawn()-Methode zu übergeben, wie?

Danke für Ihre Zeit.

+0

Ich bin nicht auf Java verwendet, aber die Fehlermeldung Sie erhalten Sie sagt, dass cmd die Datei nicht finden können ** script_2.bat **. Versuchen Sie, vor dem Anruf einen ** cd & pause ** -Befehl anzulegen, um zu sehen, ob ** script_1.bat ** vom selben Pfad wie ** script_2.bat ** erzeugt wird. – elzooilogico

+0

@elizooilogico war ein Problem mit dem Dateipfad. Ich habe 'script_1.bat' aktualisiert, um auf den absoluten Pfad von' script_2.bat' zu verweisen und es funktionierte im Knoten. Wenn Sie das in eine Antwort setzen können, die ich akzeptiere – Mac

+0

scheint ein Problem zu sein, bei dem Java-Code mit seinem eigenen Pfad beginnt, also keinen expliziten Pfad referenziert, macht der Java-Pfad von default den Ausgangspunkt für calles. Ich bin froh zu wissen, dass du es gelöst hast, und danke für das Feedback. – elzooilogico

Antwort

0

Ändern Sie diese in der ersten Partie:

call ./script_2.bat 
Verwandte Themen