Sab*_*ncu 2 windows cmd batch-file echo
在检查此 Windows 批处理/CMD 文件(来自 Chocolatey 源的RefreshEnv.cmd)时,我遇到了以下代码行:
echo/@echo off >"%TEMP%\_env.cmd"
Run Code Online (Sandbox Code Playgroud)
以上创建文件_env.cmd内容为“@echo off”。
斜线在“echo/”中有什么作用?如果我省略斜杠,则生成的文件完全相同。
我在 Windows 7 上。
首先,对于您的命令行,无论您是在书写echo/@echo off还是echo @echo off,都绝对没有区别,只是@echo off回显了文本。
甲/立即以下字符echo的命令有时被用于回声一个空行,由于echo没有任何参数返回这样的消息ECHO is on|off.。一种非常常见的方法是 write echo.,尽管如果echo.当前工作目录中有一个名为(没有文件扩展名)的文件,这可能会失败,然后无意中执行。
在一般情况下,有在以下的字符cmd,其在命令行上分隔标记,如命令和其参数:SPACE,TAB,,,;,=和非休息空间(代码0xFF)。最常用的标记分隔符(我强烈推荐)是SPACE. 多个相邻的分隔符被视为一个分隔符。
还有一些字符似乎将命令与其参数分开:., :, /, \, [, ], +and (,尽管这些字符似乎成为第一个参数的一部分。(尝试type+file.txt输入 的内容+file.txt但不输入file.txt。)
echo然而似乎表现不同,因为并非所有标记分隔符都被同等处理,并且上述将命令与其参数分开的附加字符不被视为参数的一部分。这是echo行为方式:
echo后跟无,或后跟 a SPACE, aTAB或非中断空格,或由多个此类字符组成的字符串返回ECHO is on|off.;echo后跟 a ,、 a;或 an=返回空行;echo后跟 a ,、 a;或 an =,后跟一个或多个标记分隔符返回这些标记分隔符;echo后跟一个标记分隔符,后跟一个包含至少一个除 之外的字符的字符串SPACE,TAB并且不间断空格返回该字符串;echo后跟., :, /, \, [, ],+或(返回空行;echo后跟., :, /, \, [, ], +or (,后跟其他任何内容,甚至仅标记分隔符,返回所说的任何内容;echo后跟., [,]或+失败,如果分别有名为echo., echo[,echo]和的文件echo+;echo随后\或:也可能由于类似(但更复杂)的路径冲突而失败;echo/由于路径冲突,followed不会失败,但如果后面的文本以 开头则失败?,因为/?注意到了,所以在控制台中显示帮助文本而不是给定的文本;echo后跟(, 后跟任意文本安全地返回所述任意文本;因此,回显任意文本的唯一安全方法是使用echo(. 对于返回一个空行,我更喜欢使用echo/,因为它看起来不像echo(.
DosTips上有一个关于如何通过echo命令安全地返回空行以及如何echo安全地使用命令的主题。
请注意像^, &, %, !, ), <,>和等字符|需要正确转义才能正确返回echo; 然而,这是必要的,因为命令解释器cmd与命令无关echo。
| 归档时间: |
|
| 查看次数: |
949 次 |
| 最近记录: |