如何制作支持参数的自定义 Windows 命令以运行 Node.js 脚本



我希望我可以创建自定义Windows命令,例如log,该命令将执行.js文件,例如app.js每当调用时都存在于我的项目文件夹中。

我还想将参数传递给我可以作为app.js文件中的变量访问的命令。

换句话说:
当我在 Windows 命令提示符窗口中键入log "Hello World"时,app.js文件被执行,一个名为"Hello World"的参数被传递给它。

我的app.js文件如下所示:

// This is app.js file
// This file should be run when I type “log "Hello World" "abcd"” in cmd and we must get those parameters saying "Hello World" and "abcd" to be used as variables in this code
console.log("Hello ", ...cliParameters)

1. 为批处理文件创建目录

在命令提示符窗口中,首先运行命令行:

set path

有两个环境变量PATHPATHEXT的输出,Windows命令处理器cmd.exe用于查找可执行文件或脚本,例如用户输入的批处理文件,其文件名没有文件扩展名,也没有完整路径。有关更多详细信息,请查看"X未被识别为内部或外部命令,可操作程序或批处理文件"的原因是什么?

您首先需要创建一个目录,将批处理文件保存到该目录中,以运行带有参数的 Node.js 脚本。我建议使用以下命令行来创建这样的目录:

md "%APPDATA%MyBatFiles"

2. 将此文件夹路径添加到用户环境变量 PATH

点击 Windows开始按钮并键入键盘environment.Windows 现在提供 Windows 语言版本:

  1. 编辑账户的环境变量
  2. 编辑系统环境变量

单击第一项,将打开标题为"环境变量">的对话框窗口。如果上方列表中没有名称为Path的环境变量,请单击上方列表下方的">新建"按钮,否则选择上方列表中的Path,然后单击上方列表下方的"编辑"按钮。如有必要,请输入Path作为变量名称(新变量)。然后输入作为变量值%APPDATA%MyBatFiles(新变量)或将文件夹路径%APPDATA%MyBatFiles分别附加到文件夹路径列表底部的变量值末尾。最后,单击按钮">确定"关闭两个对话框窗口。

3. 验证本地环境变量 PATH 中的文件夹路径

关闭已打开的命令提示符窗口并打开一个新窗口。在新打开的命令提示符窗口中运行:

set appdata
set path

现在应该显示环境变量PATH以附加MyBatFiles的环境变量APPDATA的文件夹路径结尾,例如:

C:UsersAyush SamantarayAppDataRoamingMyBatFiles

4. 创建一个批处理文件以运行具有所有可选参数的 Node.js 脚本

让我们假设Node.js脚本文件app.js存储在目录%USERPROFILE%Projects中。

接下来我们假设Nodejs被安装到目录%LOCALAPPDATA%nvsnode17.8.0x64中。

然后在命令提示符窗口中运行:

echo @"%%LOCALAPPDATA%%nvsnode17.8.0x64node.exe" "%%USERPROFILE%%Projectsapp.js" %%*>"%APPDATA%MyBatFileslog.cmd"

此命令行在%APPDATA%MyBatFiles目录中创建一个名为log.cmd包含命令行的批处理文件:

@"%LOCALAPPDATA%nvsnode17.8.0x64node.exe" "%USERPROFILE%Projectsapp.js" %*

在命令提示符窗口中运行call /?此命令行末尾的%*说明,该命令行引用传递到批处理文件的所有参数字符串。

4. 它是如何工作的?

在命令提示符窗口中运行:

log "Hello World"

Windows命令处理器现在cmd.exe搜索名称为log的文件,文件扩展名为当前目录中的环境变量PATHEXT的分号分隔列表,以及本地环境变量PATH的所有目录的旁边,并在目录%APPDATA%MyBatFiles中找到log.cmd

现在,通过将参数字符串"Hello World"传递到批处理文件cmd.exe来处理此批处理文件。

单个命令行开头的@会导致在将所有环境变量引用(如%LOCALAPPDATA%%USERPROFILE%)替换为适当的值后,在命令提示符窗口中禁止显示命令行的输出。

因此,使用其完全限定的文件名执行node.exe来处理 Node.js 脚本文件app.js也指定了完全限定文件名,并将传递给批处理文件的所有参数进一步传递给node.exe将这些参数字符串进一步传递给Node.js脚本文件。

5. 更多信息

我没有安装Node.js,也没有阅读其文档。所以我不知道 Node 的默认安装文件夹是什么.js以及Node.js在您的计算机上安装在哪里。我不知道 Node 可执行文件的真实文件名.js也不知道它支持或需要哪些选项来运行Node.js脚本文件。

对于批处理文件,还可以使用与%APPDATA%MyBatFiles不同的路径。这只是一个例子。

如果node.exeNode.js可执行文件的真实文件名,并且其安装目录已经在系统用户环境变量Path中,也可以只使用node.exe而不是"%LOCALAPPDATA%nvsnode17.8.0x64node.exe"在您创建的批处理文件中。 在这种情况下,cmd.exe还必须在找到运行此可执行文件log.cmd后另外搜索node.exe

最新更新