"找不到匹配的文件"使用execSync运行Sigcheck(Node.js)

时间:2018-01-29 18:39:41

标签: javascript node.js

我正在用Javascript(Node)编写程序。在这个程序中,我希望使用Windows Sigcheck工具获得可执行文件的版本号,但是它给了我"找不到匹配的文件。"

我可以从命令提示符运行Sigcheck,它运行正常: Sigcheck finds the executable, and the output is the executable's version number.

但是当我通过Node的child_process execSync()运行相同的命令时,Sigcheck找不到该文件。我运行这段代码:

let appVersionNumber = execSync('\\path\\to\\sigcheck.exe -n "C:\Program Files\Autodesk\Maya2017\bin\maya.exe"');

我得到了这个输出: "No matching files found"

如何在Node中运行Sigcheck以获取可执行文件的版本号?它肯定在运行Sigcheck,因为它正在显示横幅,但我不明白它为什么找不到可执行文件。任何帮助将不胜感激 - 谢谢!

1 个答案:

答案 0 :(得分:0)

你也需要在param字符串中转义反斜杠:

let appVersionNumber = execSync('\\path\\to\\sigcheck.exe -n "C:\\Program Files\\Autodesk\\Maya2017\\bin\\maya.exe"');

否则它们只会被跳过(这是在JavaScript中字符串文字中处理斜杠的方式),你将得到错误的路径,没有sigcheck的文件,好吧,检查。

顺便说一句,如果我是你,我可能会将这些方案放入单独的变量中:

const sigcheckPath = '\\path\\to\\sigcheck.exe';
const appPath      = 'C:\\Program Files\\Autodesk\\Maya2017\\bin\\maya.exe';
let appVersionNumber = execSync(`${sigcheckPath} "${appPath}"`);