Node.js "exec"命令不适用于 rundll32

标签 node.js

我设置了一个简单的 Node 服务器,用于自动图像打印。

代码:

var directory =  process.env['USERPROFILE'] + '\\Downloads\\';
var command = 'rundll32 C:\\Windows\\System32\\shimgvw.dll ImageView_PrintTo /pt "' + directory + imageName + '" "EPSON TM-C3500"';
exec(command, function(error, stdout, stderr){});

命令字符串:

rundll32 C:\Windows\System32\shimgvw.dll ImageView_PrintTo /pt "C:\Users\gperry\Downloads\badge_0_12968249.jpg" "EPSON TM-C3500"

如果我在 cmd.exe 进程中运行该命令,它可以完美运行,但 exec 命令似乎根本不执行任何操作...使用 exec 运行其他命令(如“mspaint/pt”)工作得很好,所以我不'不知道这里发生了什么。

非常感谢您的帮助!谢谢。

最佳答案

我为任何关心的人找到了解决方案。

我更改了命令来执行对批处理脚本的调用,然后该脚本调用了打印命令。

var directory =  process.env['USERPROFILE'] + '\\Downloads\\';
var command = 'start cmd.exe /C ' + __dirname + '\\print.bat ' + directory + imageName + ' "EPSON TM-C3500"';
exec(command, {}, function(error, stdout, stderr){});

但是批处理脚本不起作用...为什么?我不知道。我确实知道在批处理脚本中添加 TIMEOUT 0 可以修复它。

TIMEOUT 0
rundll32 C:\\Windows\\System32\\shimgvw.dll ImageView_PrintTo /pt %*

关于Node.js "exec"命令不适用于 rundll32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688478/

相关文章:

mysql - Sequelize 不良握手错误

node.js - 有没有人见过 javascript/nodejs 的单纯形库

node.js - 即使没有更改值,Firebase ref.on ("value"也会被调用 - node.js

node.js - Sequelize,自定义setter,不设置

node.js - Dust.js 使用 Mongoose 流式传输 View

mongodb - 我的 .js 文件应该放在哪里?

node.js - 如何部署 Node 应用程序依赖项?如何确保使用 npm 安装特定版本的软件包?

node.js - 如何使用 nvm 使用不同版本的 Node 运行 npm 命令?

查询执行后Javascript变量被覆盖

node.js - 运行 `yarn`时如何更改主目录?