存储在单个文件中的自定义 CMD 命令

存储在单个文件中的自定义 CMD 命令

我正在尝试创建自己的“Make”类命令,在其中可以执行诸如make clean、、make install之类的命令make server。我创建了一个 make.bat 文件,并将这些命令存储在其中。

@echo off
 clean:
 rmdir node_modules
 install:
 npm install
 server:
 node index.js

这种方法当然是行不通的,而且我也不想安装 Makefile 程序来学习更多使用 CMD 的方法。

是否可以创建一个批处理文件来执行此类操作?还是我必须安装 Makefile 程序?

答案1

是的,您可以轻松做到这一点。

批处理文件可以访问其名称后给出的所有参数。前 9 个参数可通过 %1、%2、%3、%4...%9 访问,然后您可以使用命令shift将所有参数上移,从而访问第 10 个参数及更多参数。

现在,在您的示例中,仅使用了第一个参数,但您现在知道您实际上也可以使用其他参数。

下一步是在批处理文件中跳转。您可以结合使用IF和命令来执行此操作。GOTO:labels

IF 语句如下所示:

IF "%1"=="clean" GOTO clean

您可以将所有 if 语句放在彼此之下。

在 if 语句的末尾,放置了一条通知,指出未输入有效参数:

echo No parameter or an invalid parameter was used.
echo.
echo Please use make with any of the following parameters
echo    clean      - remove the nod_modules folder.
echo    install    - execute npm install.
... etc.

一旦你完成了帮助页面,你就需要跳转到结尾。业务逻辑建议使用 END 标签并跳转到那里,这样你就可以在需要时在结尾处放置一个命令,该命令在任何地方都有效,例如暂停。

因此,您可以输入:

goto end

现在我们需要添加所有功能。

从标签开始。

:clean

然后添加你的命令

rmdir node_modules

然后跳转到脚本的末尾,因为我们不希望其他命令也被执行。

您甚至可以更进一步,使用第二个参数来指定要删除的文件夹。例如:

rmdir %2

您现在就可以运行make clean node_modules以删除该文件夹。

goto end

因此你的小函数如下所示:

:clean
rmdir node_modules
goto end

列出所有功能后,显然也必须给出结尾:

:end

任何可选的命令都可以放在末尾。

相关内容