【问题标题】:Node.js spawn() call not working on WindowsNode.js spawn() 调用在 Windows 上不起作用
【发布时间】:2015-06-24 21:48:42
【问题描述】:

我需要使用命令行打印文件。当做类似的事情时

rundll32 C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo "d:\Temp\test.jpg" "Canon_CP1000"

在 CMD 中手动它工作得很好,图像被打印出来。但是,一旦我使用 Nodes “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);
});

控制台中也没有任何输出。 spawn 中的其他命令(例如“ipconfig, ['/all']”)。我还尝试将空格分隔的属性分开并将其分别放置在一个数组插槽中。没有效果。

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

【问题讨论】:

    标签: node.js windows printing


    【解决方案1】:

    使用一组参数传递给您的子进程。

    var cliCmd = spawn('rundll32.exe', [
        'C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo',  'd:\\Temp\\test.jpg', 'Canon_CP1000'
    ]);
    

    另外,请确保您的全名是 rundll32.exe。您可能还必须指定其路径。

    【讨论】:

    • 谢谢!我终于让它工作了。解决方案既不是“.exe”也不是路径。这是(如您所建议的)将属性拆分为数组部分并去掉双引号的组合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多