我正在尝试创建自己的“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
任何可选的命令都可以放在末尾。