在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 關(guān)于Node.js child_process.execFile在windows

關(guān)于Node.js child_process.execFile在windows上運(yùn)行.bat文件的問題

官方文檔上Spawning .bat and .cmd files on Windows這部分的意思是.bat, .cmd本身不是可執(zhí)行的(executable),所以在windows上無法通過execFile直接運(yùn)行。但是我在實(shí)際測(cè)試中是可以直接運(yùn)行的:
js代碼主要就一句執(zhí)行bat文件的:

execFile('echo.bat', (err, stdout, stderr) => {
    console.log(stdout)
})

.bat文件里就只有一句echo語句:

echo 'hello'

結(jié)果是能執(zhí)行的,正常來說不應(yīng)該是不能執(zhí)行的嗎?

回答
編輯回答
半心人

child_process.exec() 和 child_process.execFile() 之間的重大區(qū)別會(huì)根據(jù)平臺(tái)的不同而不同。 在類
Unix 操作系統(tǒng)上(Unix、 Linux、 macOS),child_process.execFile()
效率更高,因?yàn)樗恍枰苌粋€(gè) shell。 但是在 Windows 上,.bat 和 .cmd
文件在沒有終端的情況下是不可執(zhí)行的,因此不能使用 child_process.execFile() 啟動(dòng)。 當(dāng)在 Windows
下運(yùn)行時(shí),要調(diào)用 .bat 和 .cmd 文件,可以通過使用設(shè)置了 shell 選項(xiàng)的 child_process.spawn()、或使用
child_process.exec()、或衍生 cmd.exe 并將 .bat 或 .cmd 文件作為一個(gè)參數(shù)傳入(也就是 shell
選項(xiàng)和 child_process.exec() 所做的工作)。 在任何情況下,如果腳本文件名包含了空格,則需要用加上引號(hào)。

2018年7月8日 08:56