Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows CMD文件中,紧接着斜杠的回显有什么作用?_Windows_Batch File_Cmd_Echo - Fatal编程技术网

在Windows CMD文件中,紧接着斜杠的回显有什么作用?

在Windows CMD文件中,紧接着斜杠的回显有什么作用?,windows,batch-file,cmd,echo,Windows,Batch File,Cmd,Echo,在检查此Windows批处理/CMD文件(来自Chocolate源代码)时,我遇到了以下代码行: echo/@echo off >"%TEMP%\_env.cmd" 上面创建的文件_env.cmd的内容为“@echo off” 斜杠在“echo/”中的作用是什么?如果省略斜杠,则生成的文件完全相同 我使用的是Windows 7。首先,对于您的命令行,无论您是在编写echo/@echo off还是echo@echo off,都没有区别,只回显了文本@echo off 紧跟在echo命令之后

在检查此Windows批处理/CMD文件(来自Chocolate源代码)时,我遇到了以下代码行:

echo/@echo off >"%TEMP%\_env.cmd"
上面创建的文件_env.cmd的内容为“@echo off”

斜杠在“echo/”中的作用是什么?如果省略斜杠,则生成的文件完全相同


我使用的是Windows 7。

首先,对于您的命令行,无论您是在编写
echo/@echo off
还是
echo@echo off
,都没有区别,只回显了文本
@echo off

紧跟在
echo
命令之后的
/
字符有时用于回送空行,因为
echo
不带任何参数返回类似
echo is on | off的消息。
。一种非常常见的方法是编写
echo.
,不过如果当前工作目录中有一个名为
echo.
(无文件扩展名)的文件,则此操作可能会失败,然后会意外执行


通常,
cmd
中有以下字符,它们在命令行上分隔标记,如命令及其参数:空格、制表符、
=
和非中断空间(代码
0xFF
)。最常用的令牌分隔符(我强烈推荐)是空格。多个相邻分离器被视为单个分离器

还有一些字符似乎将命令与其参数分开:
/
\
[
]
+
),尽管这些字符似乎是第一个参数的一部分。(请尝试键入
type+file.txt
以键入
+file.txt
的内容,但不要键入
file.txt
的内容)


然而,
echo
的行为似乎有所不同,因为并不是所有的标记分隔符都被同等地处理,并且前面提到的将命令与其参数分开的附加字符也没有被视为参数的一部分。这就是
echo
的行为方式:

  • echo
    后跟零,或后跟空格、制表符或不间断空格,或由多个此类字符组成的字符串返回
    echo处于打开|关闭状态。
  • echo
    后跟一个
    、一个
    或一个
    =
    返回一个空行
  • echo
    后跟一个
    、一个
    或一个
    =
    ,后跟一个或多个令牌分隔符返回这些令牌分隔符
  • echo
    后跟标记分隔符,后跟至少包含一个字符(空格、制表符和非中断空格除外)的字符串返回该字符串
  • echo
    后跟
    /
    \
    [
    ]
    +
    返回空行
  • echo
    后跟
    [
    ]
    +
    ,后跟任何其他内容,甚至仅标记分隔符,返回所述内容
  • echo
    后接
    [
    ]
    +
    如果有名为
    echo的文件,则会失败。
    echo[
    echo]
    echo+
  • echo
    后跟
    \
    也可能由于类似(但更复杂)的路径冲突而失败
  • echo
    后续的
    /
    不能由于路径冲突而失败,但是如果以下文本以
    开头,则会失败,因为会注意到
    /?
    ,因此控制台中会显示帮助文本,而不是给定文本
  • echo
    后跟
    ),后跟任意文本安全返回所述任意文本
因此,回送任意文本的唯一安全方法是使用
echo(
)返回空行,我更喜欢使用
echo/
,因为它看起来不像
echo(
)那么奇怪

关于如何通过
echo
命令安全地返回空行以及如何安全地使用
echo
命令,有一个很好的线索


考虑像
^
&
%
)这样的字符
|
需要正确转义才能由
echo
正确返回;但是这是必要的,因为命令解释器
cmd
,与
echo
命令无关。

它和其他任何字符一样只是一个字符。您可能会看到
echo.
echo(
以及其他内容。好的……可以在“回送变量”和“回送新行”下阅读更多内容。在我看来,将一个不同的字符从一个空格中作为一个空格,后跟一个最终为空的%var%是很方便的,因为
回音出现在
回复中。我记得有些人比较了哪些其他字符是可能的,并且执行速度不同。@LotPings在这种情况下%var%是什么?谢谢。这就是为什么有些人e不要使用空格作为echo的命令分隔符。
echo
+空格不允许返回空行,您将收到
echo打开|关闭。
然后;
echo。
是一种常用的语法来避免这种情况,但如果有一个名为
echo的文件,
echo/
可以避免这种情况(
/
不能出现在文件名中);
echo/
但是无法输出单个
字符(请记住
/?
选项);因此最后,
echo(
是回显任何字符串的唯一安全方法…搜索有关safe
echo
的文章…是否有分号以外的标记分隔符?谢谢。是的,空格,制表符,