Angular CLI 全局 ng.cmd 文件内容分析

举报
汪子熙 发表于 2022/07/31 11:28:16 2022/07/31
【摘要】 文件内容如下:REM Jerry::这是注释@ECHO offSETLOCALCALL :find_dp0IF EXIST "%dp0%\node.exe" ( SET "_prog=%dp0%\node.exe") ELSE ( SET "_prog=node" SET PATHEXT=%PATHEXT:;.JS;=;%)"%_prog%" "%dp0%\node_modules\...

文件内容如下:

REM Jerry
::这是注释
@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%"  "%dp0%\node_modules\@angular\cli\bin\ng" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b

  • SETLOCAL:

开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL。

在批处理文件中开始环境变量的本地化。 本地化一直持续到遇到匹配的 endlocal 命令或到达批处理文件的末尾。

更多细节见 windows 文档

  • CALL

在不停止父批处理程序的情况下从另一个调用一个批处理程序。 call 命令接受标签作为调用的目标

  • CALL :find_dp0

魔法变量 %n 包含用于调用文件的参数:%0 是 bat 文件本身的路径,%1 是后面的第一个参数,%2 是第二个,依此类推。

由于参数通常是文件路径,所以有一些额外的语法来提取部分路径。 ~d 是驱动器,~p 是路径(不含驱动器),~n 是文件名。 它们可以组合,所以 ~dp 是驱动器+路径。

因此 %~dp0 在 bat 中非常有用:它是执行 bat 文件所在的文件夹。

您还可以获得有关文件的其他类型的元信息:~t 是时间戳,~z 是大小。

dp0 意思是批处理文件所在的驱动器和路径。

第五行调用的 :find_dp0, 实现在第18行。

  • set: 设置环境变量。

SET dp0=%~dp0

意思是把当前批处理文件所在的绝对路径,设置给批处理文件执行时临时声明的环境变量 dp0

  • IF EXIST “%dp0%\node.exe”

检查当前批处理文件的同级目录下,是否存在 node.exe 文件。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。