【问题标题】:Can't start npm via wmic无法通过 wmic 启动 npm
【发布时间】:2017-09-13 19:10:51
【问题描述】:

如果我放入 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,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

> 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 to get process id 启动它。

PS:Same question in Russian.

【问题讨论】:

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

标签: windows batch-file npm wmic


【解决方案1】:

尝试这样(模式详情在我的问题下的评论中):

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

【讨论】:

  • 谢谢!但是这次的解决方案要简单得多:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-20
    • 2019-04-13
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多