我需要使用命令行打印文件。当做类似的事情时
rundll32 C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo "d:\Temp\test.jpg" "Canon_CP1000"
在 CMD 中手动它工作得很好并且图像被打印。但是,一旦我使用 Node “spawn”命令来实现相同的行为,它就不会执行任何操作。
var spawn = require('child_process').spawn;
var cliCmd = spawn('rundll32', [
'C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo "d:\\Temp\\test.jpg" "Canon_CP1000"',
]);
cliCmd.stdout.on('data', function (data) {
console.log('stdout', data);
});
cliCmd.stderr.on('data', function (data) {
console.log('stderr', data);
});
控制台中也根本没有任何输出。生成中的其他命令有效(例如“ipconfig,['/all']”)。我还尝试将空格分隔的属性分开,并将其分别放入一个数组槽中。没有效果。
非常感谢您的帮助。谢谢!
最佳答案
使用参数数组来传递以跨越您的子进程。
var cliCmd = spawn('rundll32.exe', [
'C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo', 'd:\\Temp\\test.jpg', 'Canon_CP1000'
]);
此外,请确保您拥有 rundll32.exe
的全名。您可能还必须指定其路径。
关于Node.js spawn() 调用在 Windows 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31037708/