2017-06-02 80 views
2

我完全被here这一行代码搞糊涂了,那漂亮的打印%PATH%变量。这张cmd单行纸的意思是漂亮的打印%PATH%

ECHO.%PATH:;= & ECHO.%

你能打破这一个班轮起来,并解释每个部分意味着什么?

例如,

  • 如何%PATH%分裂的分号?
  • 该变量PATH通常被称为%PATH%。这里使用的语法是什么?
  • ECHO.%:;=是什么意思?
  • “对于每一行,回显出”逻辑?

我也很感谢它,如果你可以指向任何解释语法的资源。

回答

4

第一检查此:https://ss64.com/nt/syntax-replace.html

分号意味着在可变的子串会replaced.First是旧的子串然后等号,则是新的。

在这种情况下,每个分号都被命令ECHO.取代,该命令打印一个新行。 &符号用于在一行上执行更多命令。

由于没有延迟扩展,变量的扩展也会执行回显命令。

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发布空白或只有白色 命令文本后的空间,输出当前'回声'状态,即 是ON或OFF。