REM语句中的%〜

神秘先生先生

我注意到在Windows批处理文件中,即使您删除%〜也会收到错误

For valid formats type CALL /? or FOR /?
The syntax of the command is incorrect.

为什么不忽略注释行?

@ ECHO OFF
REM Blah blah blah
REM %~ this will cause an error
REM %%~ Double the fun, no error
莫菲

REM是一个类似ECHO的命令在命令提示符窗口中运行rem /?以获取有关此命令的帮助。

Windows命令解释器首先像批处理文件中的所有其他行一样解析此命令行,除了那些以冒号开头的行(被解释为标签行而不是命令行)除外。

因此,%执行REM之前,将单个解释为环境变量或批处理文件参数引用的开头删除单个百分号,因为此命令行上没有更多的百分号。

%~在命令行解析中被解释为无效的批处理文件参数引用。对于Windows命令解释器,命令REM不评估行的其余部分无关紧要。首先,命令行是独立于命令进行解析的,然后,cmd.exe无论命令是什么都将执行命令。

删除第一行@ ECHO OFF,可以看到Windows命令行解释器解析每个命令行后如何执行。以冒号开头的行不会输出为解释为标签线而不是命令行。

有关批处理脚本解析的详细信息,请参阅Windows命令解释器(CMD.EXE)如何解析脚本?

例:

REM User name: %USERNAME%
REM User profile directory: %USERPROFILE%
REM Application data directory: %APPDATA%
REM Batch arguments: %0 %*
PAUSE

在运行此批处理文件时,这些REM命令行中的环境变量引用和批处理文件参数引用被替换为环境变量和批处理文件的值,而没有@ECHO OFF顶部。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章