2016-08-12 71 views
0

我試圖執行通過節點的spawn()像一個批處理腳本什麼如下所示:節點child_process:嵌套的批處理文件

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); 
}); 

的問題是,script_1.bat在同一目錄call命令script_2.bat

`call script_2.bat` 

當我在命令行中執行script_1.bat時,它工作正常。然而,當我從節點運行script_1.bat,我看到這個控制檯:

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

我已經做了我最好通過該節點的子進程文檔挖,但我找不到爲什麼會發生這種事的explination。有沒有辦法將嵌套批處理文件傳入spawn()方法?

謝謝你的時間。

+0

我不習慣去渣,但你的錯誤信息告訴你,CMD找不到文件** ** script_2.bat。嘗試在調用之前放置** cd&pause **命令,以查看** script_1.bat **是否與** script_2.bat **相同​​。 – elzooilogico

+0

@elizooilogico這是文件路徑的問題。我更新了'script_1.bat'來引用'script_2.bat'的絕對路徑,並且它在節點中工作。如果你可以把它放到一個答案中,我會接受 – Mac

+0

似乎是一個問題,其中java代碼以自己的路徑開始,所以不引用顯式路徑,使默認的java路徑成爲calles的起點。很高興知道你解決了它,並感謝您的反饋。 – elzooilogico

回答

0

更改這個在第1批:

call ./script_2.bat