回答:
標準のWindowsコマンドシェル— cmd.exe
— <<
演算子をまったく使用しません。¹
単一<
の手段「にファイルを読んで標準入力に」cmd.exe
が、2つの<
文字のバックツーバックに意味がありcmd.exe
、それはあなたが得たエラーを与えますので、。
<<
オペレータはあるのすべての主要なタイプに有意義なUnixコマンドシェル、それがために使用され、ヒアドキュメント:²
$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END
これらの3行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
、ヒアドキュメントのテキストが画面に印刷されるように正確にフォーマットされるため、一連のステートメントを記述するよりも優れています。さらに、このコンテキストでは、空白、引用、リダイレクト、および変数補間を簡単に処理できます。たとえば、シェルがI / Oリダイレクトにそれらを使用しようとするのを防ぐために巧妙な操作をすることなく、使用法メッセージで山括弧を使用していることに注意してください。
Windowsでこのようなことをしたい場合は、Cygwinをインストールして、そのシェルの1つを使用できます。Windows 10を使用している場合は、代わりにWSLを使用できます。
脚注:
このリンクは、アーカイブされたWindows XPドキュメントツリーに移動します。Microsoftは、その場合には、彼らは再びそれを破る、彼らはこれらのドキュメントをアーカイブしたときに、私が以前使っていたリンクを壊し、ここでバックアップサードパーティの参照です。
cmd.exe
私がmicrosoft.comで知っている他の唯一の参考資料は、WindowsコマンドPDF(4.9 MB、948ページ)です。cmd
プロンプトで与えることができます。このPDFは2つの点で不完全です。まず、ここで最も関連性が高いのは、cmd.exe
シェルでのリダイレクトの動作に関する複合的な説明ではありません。シェル文法の議論すらありません。第二に、PDFのコマンドリストが不完全です。最初にチェックしたことはカバーされていませんdiskpart
。
これはすべて、Microsoft cmd.exe
がPowerShellに置き換えようとする明確な試みによるものであり、PowerShellが長年続いていることを信じています。この記事を書いている時点での最新のWindows 10アップデートではcmd.exe
、まだ存在していませんが、の存在を隠すためのさらなる措置を講じています。
PowerShellは<<
リダイレクト演算子もサポートしていないことに注意してください。また、Unixシェルの両方からの悲しい回帰では、リダイレクトをcmd.exe
サポートしていませ<
ん!
ヒアドキュメントを開始する標準的な方法は、上で書いたとおりで<<
、区切り文字と単語の間にスペースはありません。私のあいまいな思い出は、シェルスクリプトで見たヒアドキュメントの使用もすべてこの方法で行われるということです。ヒアドキュメントのPOSIX仕様でも、例でこのスタイルを使用しています。
ただし、POSIX.1-2008仕様の他の部分を注意深く読む<<
と、区切り文字と単語の間にいくつかのスペースまたはタブ文字を入れることが合法であることが明らかになります。特に、参照トークン認識は7と10ルールの定義io_here
におけるシェル文法、との定義を「空白」の文字クラス。
これがシェルのドキュメント化方法です。マイクロソフト、メモを取ります。;)
ここでBash 4でテストしksh93
、これが期待どおりに機能することを確認します。
ありません>
と>>
だけ<
、何もあり<<
command < filename Type a text file and pass the text to command
>
新しいファイルに書き込みます。
>>
ファイルに追加します
<
ファイルから読み取る
|
コマンド出力を別のコマンドの入力に送信します
リストについてはこちらをご覧ください%^を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.