无法通过WMIC

问题描述:

开始NPM如果我放到BAT文件命令启动node无法通过WMIC

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,其中according to msdn msdn表示未找到路径:

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 

> [email protected] go D:\Temp\Supertemp\wmic npm 
> node go 

D:\Temp\Supertemp\wmic npm 
D:\Temp\Supertemp\wmic npm 

我通过012启动它to get process id

PS:Same question in Russian.

+1

这是因为npm是一个cmd文件,但不可执行,可能wmic不使用文件关联。由于npm在%path%中,因此可以很容易解决。 – npocmaka

有文件npm.cmdnpm文件sh

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." 

尝试像这样(的问题下,在我的评论模式的详细信息):

@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." 
+0

谢谢!但是这个时候解决方案更简单:) – Qwertiy