Node.js“exec”命令不能与rundll32一起使用

时间:2016-01-09 00:50:40

标签: node.js

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

代码:

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”工作得很好,所以我不喜欢我知道这里发生了什么。

非常感谢帮助!感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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 %*