如何在批处理文件或命令提示符中使用“

如何在批处理文件或命令提示符中使用“

我知道它>>的用途,它将所有消息写入文件而不是屏幕。我想<<反过来做,我试了一下,收到一条消息:<< was unexpected at this time.

请告诉我其用途<<和用法。

答案1

标准 Windows 命令 shell — cmd.exe— 不使用<<运算符根本

单个<表示“将文件读入标准输入“到,但是连续cmd.exe两个字符对来说毫无意义,因此会出现错误。<cmd.exe

运营<<对所有主要类型的Unix 命令 shell,它用于此处文件

$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END

这三行被发送到some-command其标准输入。

这对于将大量文本发送到命令中而无需先将其写入文件(使用运算符时必须先将其写入文件)非常有用<。我经常使用它来将“使用”消息嵌入脚本中:

#!/bin/sh
if [ -z "$1" ]
then
    cat <<USAGE
usage: myscript <files...>

     Grobbles the foobie for all files given on the command line.

USAGE

    exit 1
fi

# ... do something with command line arguments

这比编写一堆echo语句要好,因为 heredoc 文本的格式与打印到屏幕上的格式完全相同。此外,在此上下文中处理空格、引号、重定向和变量插值也更容易。例如,请注意,我在使用信息中使用了尖括号,而不必采取任何巧妙的措施来阻止 shell 尝试使用它们进行 I/O 重定向。

如果你想在 Windows 上做这样的事情,你可以安装赛格威并使用其中一个 shell。如果你使用的是 Windows 10,你可以使用西弗吉尼亚海岸反而。


脚注:

  1. 该链接进入已归档的 Windows XP 文档树。微软在归档这些文档时破坏了我之前使用的链接,因此,如果他们再次破坏它,这里是备用的第三方参考。

    据我所知,microsoft.com 上唯一的其他cmd.exe参考资料是Windows 命令 PDF(4.9 MB,948 页),它只提供了您可以在提示符下给出的大多数内置和 Microsoft 提供的外部命令的参考cmd。此 PDF 在两个方面不完整。首先,也是与此最相关的,没有综合讨论重定向在 shell 中的工作方式cmd.exe;甚至没有讨论 shell 语法。其次,PDF 的命令列表不完整:我碰巧检查的第一件事没有涵盖:diskpart

    我相信这一切都源于微软试图cmd.exe电源外壳,这种情况已经持续了很多年了。在撰写本文时,在最新的 Windows 10 更新中,他们已经采取进一步措施隐藏存在cmd.exe,尽管它还没有完全消失。

    值得一提的是PowerShell 也不支持<<重定向运算符。也不 — — 与 Unix shell 相比,这是一个令人遗憾的倒退 — cmd.exe— 它不支持<重定向!

  2. 开始 here-document 的规范方式就像我上面写的那样,在<<和分隔符单词之间没有空格。我模糊的记得,我在 shell 脚本中看到的所有 here-document 的使用也都是这样进行的。此处文档的 POSIX 规范在其示例中也使用了这种风格。

    然而,仔细阅读POSIX.1-2008 规范表明在 和分隔符之间放置一定数量的空格或制表符是合法的<<。具体来说,请参见令牌识别规则 7 和 10io_here,在的定义shell 语法,以及定义“空白”字符类

    就是如何记录 shell。微软,记下来。;)

    在 Bash 4 上进行测试并ksh93确认其按预期工作。

答案2

有,>>>没有<<<

command < filename        Type a text file and pass the text to command

来源: http://ss64.com/nt/syntax-redirection.html

答案3

>写入新文件。

>>附加到文件

<从文件读取

|将一个命令的输出发送到另一个命令的输入

请参阅此处查看列表在 cmd.exe 中输入 %^ 是 Windows 的复活节彩蛋吗?

自发布以来,已添加此内容。

Starting a Program
===============

See start /? and call /? for help on all three ways.

Specify a program name
--------------------------------

    c:\windows\notepad.exe

In a batch file the batch will wait for the program to exit. When
typed the command prompt does not wait for graphical
programs to exit.

If the program is a batch file control is transferred and the rest of the calling batch file is not executed.

Use Start command
--------------------------

    start "" c:\windows\notepad.exe

Start starts a program and does not wait. Console programs start in a new window. Using the /b switch forces console programs into the same window, which negates the main purpose of Start.

Start uses the Windows graphical shell - same as typing in WinKey + R (Run dialog). Try 

    start shell:cache

Use Call command
-------------------------

Call is used to start batch files and wait for them to exit and continue the current batch file.

相关内容