cmd.exeコマンドに新しい行を挿入するにはどうすればよいですか?


23

cmd.exe以下のように、コマンドの一部として改行または改行を使用して、でコマンドを実行しようとしています。

command -option:text  
whatever

ただし、次の行でコマンドを継続するのではなく、新しい行ごとにコマンドが実行されます。

では、新しい行の文字を入力する方法、またはcmd.exeで複数行のコマンドを作成する方法を教えてください。



回答:


19

^文字をエスケープとして使用します。

command -option:text^

whatever

Windows XPなどのcmd.exeを使用していると仮定しています。これは実際のDOSではありません。実際のDOS(MS-DOS、Win3.1、Win95、Win98、WinME)を使用している場合、改行のエスケープがあるとは思わない。カスタムシェルを実行する必要があります。cmd.exeは、「More?」のプロンプトを表示します。^行末でEnterキーを押すたびに、Enterキーを押すだけで、実際に改行をエスケープ/埋め込みできます。


あまりにもクール、私はそれを知りませんでした。
TJクラウダー

1
あなたが提案するのは、改行でより多くのテキストを入力できるようにすることです。改行は保持されません。私が欲しいのは、「テキスト」と「何でも」の間の改行です。このような何か:「テキスト\ nwhatever」
rudimenter

私は(今編集した)私のオリジナルのポストでこれを実現していないため私の悪い、あなたがそれを行うために、2つの改行を使用する必要が信じている
ダース・Androidの

1
テキストにスペースがある場合は、引用符で囲む必要があることに注意してください。さらに、終了引用符を必ず含めてください。そうしないと、キャレットはエスケープ文字として無視され、テキストのように扱われます。最後に、スペースを含む各行のテキストを引用符で囲み(安全のためにスペースが含まれていなくてもそうします)、続く各行の閉じ引用符の後にキャレットを配置する必要があります。
Synetech

1
私はSHUTDOWN.EXEコマンドのコメントに改行を入れる方法を見つけようとして、ここで終わりました。私はこのようなものを使用することになりました:shutdown -s -t 900 -c "foo bar"^ >もっと? "baz"^ >その他? "test that."動いた。
Synetech

4

テンキーでAltコードを使用する

C:\>ver

Microsoft Windows [Version 6.3.9600]

C:\>echo Line1◙Line2 >con
Line1
Line2

C:\>

その改行文字は、numpadを使用してCLIでAltコードとして入力できます。NumLockをオンにして、ALTを押したまま、ALTを放す前にテンキーで10を入力します。CRも必要な場合は、Alt + 13とAlt + 10の両方で入力します。♪◙

注:これはバッチファイルでは機能しません。

サンプルの使用例:

環境変数%PATH%または%CLASSPATH%を読み取って、何がどの順序で存在するかを簡単に把握しようとしていpathますが、返されるテキストの壁は判読できません。次に、これはすぐに入力できるものです。

echo %path:;=◙% >con

編集:

>conBrent Rittenhouseが新しいバージョンのcmd.exeで発見した、元の方法が機能しなくなった回避策を追加しました。


これは私にはうまくいかないようです。最終的にe2 99 aa e2 97 99渡されます。ある種のUnicodeコードポイントですか?ただし、コマンドラインに文字が表示されます。助言がありますか?
ブラッド

@Brad Windows 10の新しいcmd.exeでは動作していないようで、古いWindows 7ボックスでもこのように動作しないことを確認できます。
アミットナイ

変だ!私は何かから古いcmd.exeのを掘ることができれば、私は....疑問に思う
ブラッド・

@ブラッド、私はちょうどいくつかのことを試しましたが、LucidaとTrue Typeフォントの代わりにコンソールプロパティでラスターフォントに切り替えてUse legacy consoleチェックボックスをオンにすると、その古い動作を得ることができることに気付きました。しかし、高解像度モニターでは非常に悪く見えます。
アミットナイ

1
実際、私はこれをあらゆるフォントで完全に動作させる解決策を見つけたと思います!単にalt-10文字で行をエコーアウトし、それをCONにリダイレクトすれば機能します!例:(echo New-line detected rigghhhtt ◙^<--- HERE!) > CON周囲の括弧はオプションです。ここでは、これで何ができるかのより堅牢な例である(キャリッジリターンた今の仕事、そして完全に独立して!):i.imgur.com/qqN37PH.png
ブレントリッテンハウス

1

これがうまくいくかどうかはわかりませんが、&echoを入力してください(次のスペースが重要です)。改行する各ステートメントの間に。私はこれを単純なbatファイルでのみ試しました

echo %1

それをtestNewLines.batとして保存しました

それで、cmd行

testNewLines first line&echo Second Line&echo Third line

次の結果がエコーバックされました

1行
目2行
目3行目


1

Amitの答え(/superuser//a/1132659/955256)を拡張して、レガシーコンソールを使用せずに、任意のフォントでそれを行う方法を見つけました。

あなたがする必要があるのは、単にalt-10文字で行をエコーアウトし、それをリダイレクトしcon、それが動作することです!

たとえば、次の場合:

(エコー改行検出rigghhhtt◙^ <---ここに!)> CON

編集:楽しい事実、あなたはそのように最初にリダイレクトを置くことができるようです:

> CON echo New-line detected rigghhhtt◙^ <---こちら!

奇妙な、え?

次の出力が得られます。


New-line detected rigghhhtt  
<-- HERE!

(周囲の括弧はオプションです。)

以下は、このANDキャリッジリターンを使用して何ができるかを示す、より堅牢な例です。

何よりも、ファイルにリダイレクトする場合にも機能します!
(単に変更> CONする> desired_output_file.txt

楽しい!


1

^の出力は保存可能です

set br= ^
<</br (newline)>>
<</br>>

例:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"


rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^



set "t=t1!br!t2!br!t3"

for /f "tokens=* delims=" %%q in ("!t!") do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

; 出力:

t1
t2
t3
Press any key to continue . . .

0

Windows cmd.exeシェルからはできないと思います。(DOS ではありません


そのために完全な「カスタムシェル」は必要ありません。次のようなものを書くだけです(Pythonの例):

import subprocess
subprocess.call(["C:\\bin\\sometool.exe", "test\nwith\nnewlines"])

またはRuby:

Kernel::exec "C:\\bin\\sometool.exe", "test\nwith\nnewlines"

ほら、そんなに難しくない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.