关于Node.js child_process.execFile在windows上运行.bat文件的问题

发布于 2022-09-06 03:46:35 字数 557 浏览 11 评论 0

官方文档上Spawning .bat and .cmd files on Windows这部分的意思是.bat, .cmd本身不是可执行的(executable),所以在windows上无法通过execFile直接运行。但是我在实际测试中是可以直接运行的:
js代码主要就一句执行bat文件的:

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

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

echo 'hello'

结果是能执行的,正常来说不应该是不能执行的吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梨涡 2022-09-13 03:46:35

child_process.exec() 和 child_process.execFile() 之间的重大区别会根据平台的不同而不同。 在类
Unix 操作系统上(Unix、 Linux、 macOS),child_process.execFile()
效率更高,因为它不需要衍生一个 shell。 但是在 Windows 上,.bat 和 .cmd
文件在没有终端的情况下是不可执行的,因此不能使用 child_process.execFile() 启动。 当在 Windows
下运行时,要调用 .bat 和 .cmd 文件,可以通过使用设置了 shell 选项的 child_process.spawn()、或使用
child_process.exec()、或衍生 cmd.exe 并将 .bat 或 .cmd 文件作为一个参数传入(也就是 shell
选项和 child_process.exec() 所做的工作)。 在任何情况下,如果脚本文件名包含了空格,则需要用加上引号。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文