![windows 命令 shell 脚本](https://linux22.com/image/1339493/windows%20%E5%91%BD%E4%BB%A4%20shell%20%E8%84%9A%E6%9C%AC.png)
这是一个关于CMD shell脚本的问题,我见过如下脚本:
FOR %%X in (java.exe javac.exe ant.bat android.bat) do (
SET FOUND=%%~$PATH:X
IF NOT DEFINED %FOUND% GOTO MISSING
)
谁能向我解释一下这是什么%%~$PATH:X
?
答案1
%%~$PATH:X
是路径连接。
%%X
是实例变量的名称,在循环中迭代时,该变量被设置为java.exe
、等javac.exe
FOR
和之间~$PATH:
基本上是在环境变量中包含的每个目录中搜索名为(或当前设置的任何内容)的文件。%%
X
java.exe
%%X
%PATH%
另请参阅这个 StackOverflow 问题重申了该技术并包含一些关于它的讨论(但没有从理论上解释它在语法上的作用)。PATHEXT
那里也有很好的讨论。
答案2
扫描 PATH 环境变量中的每个目录是否存在文件 %X,并将第一个匹配的目录的名称保存到 FOUND 中。
HELP FOR
在 Windows CMD shell 中输入以获取完整文档。