无法通过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。
答
有文件npm.cmd
和npm
文件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
这是因为npm是一个cmd文件,但不可执行,可能wmic不使用文件关联。由于npm在%path%中,因此可以很容易解决。 – npocmaka