这个cmd单行的含义相当打印%PATH%

时间:2017-06-02 14:12:10

标签: batch-file cmd

我对来自here的这个单行完全感到困惑,它打印了%PATH%变量。

  

ECHO.%PATH:;= & ECHO.%

你可以打破这个单行,并解释每个部分的含义吗?

例如,

  • %PATH%如何拆分分号?
  • PATH变量通常称为%PATH%。这里使用的语法是什么?
  • ECHO.%:;=的含义是什么?
  • 每行的"在哪里回复" 逻辑?

如果你能指出解释语法的任何资源,我也会感激。

2 个答案:

答案 0 :(得分:4)

首先检查一下:https://ss64.com/nt/syntax-replace.html

分号表示变量中的子字符串将被替换。首先是旧的子字符串,然后是等号,然后是新的。

在这种情况下,每个分号都会被命令ECHO.替换,后者会打印一个新行。 &符号用于在一行上执行更多命令。

由于没有延迟扩展,变量的扩展也将执行echo命令。

答案 1 :(得分:2)

示例(下划线表示空格)

%PATH%a;b;c

表达式%PATH:;=_&_ECHO.%;替换为_&_ECHO.(请参阅@npocmaka的回答)

这会给a_&_ECHO.b_&_ECHO.c

由于%PATH%不以分号开头,因此我们必须在ECHO.前加上上面的表达式,以确保打印第一个目录a。这给了

  

ECHO.%PATH:;=_&_ECHO.%

扩展为ECHO.a_&_ECHO.b_&_ECHO.c

ECHO.为什么点?

%PATH%a;b;;c

如果我们使用ECHO_,我们会得到

a
b
ECHO is on.
c

如果我们使用ECHO.,我们会得到

a
b

c

来自this discussion

  

ECHO.用于获取ECHO语句以输出空行。在   根据其设计,ECHO发布空白或只是白色   命令文本后的空格,输出当前的'echo'状态,即   打开或关闭。