无法通过wmic启动npm

如果我把bat-file命令放入启动node

 wmic process call create "npm run go","%~dp0." 

一切工作正常:

 D:\Temp\Supertemp\wmic npm>wmic process call create "node go","D:\Temp\Supertemp\wmic npm\." Идет выполнение (Win32_Process)->Create() Метод успешно вызван. Параметры вывода: instance of __PARAMETERS { ProcessId = 13292; ReturnValue = 0; }; 

但是如果我用npm代替

 wmic process call create "npm run go","%~dp0." 

错误9发生, 根据msdn msdn意味着找不到path:

 D:\Temp\Supertemp\wmic npm>wmic process call create "npm run go","D:\Temp\Supertemp\wmic npm\." Идет выполнение (Win32_Process)->Create() Метод успешно вызван. Параметры вывода: instance of __PARAMETERS { ReturnValue = 9; }; 

文件package.json

 { "name": "wmic-npm-test", "version": "0.0.0", "scripts": { "go": "node go" } } 

文件go.js

 setInterval(function () { console.log(require('process').cwd()); }, 1000); 

如果简单地从控制台启动npm ,一切正常。

 D:\Temp\Supertemp\wmic npm>npm run go > wmic-npm-test@0.0.0 go D:\Temp\Supertemp\wmic npm > node go D:\Temp\Supertemp\wmic npm D:\Temp\Supertemp\wmic npm 

我通过wmic 开始获取进程ID 。

PS: 同样的问题在俄罗斯。

尝试像这样(模式细节在我的评论下的问题):

 @echo off for %%a in (npm.cmd) do set "npm_path=%%~f$PATH:a" echo %npm_path% wmic process call create "cmd.exe /c call \"%npm_path%\" ","%~dp0." 

sh文件的npm.cmdnpm文件:

 D:\Temp\Supertemp\wmic npm>where npm C:\Program Files\nodejs\npm C:\Program Files\nodejs\npm.cmd 

要执行npm命令,你需要指定你想运行cmd-file:

 wmic process call create "npm.cmd run go","%~dp0."