web-dev-qa-db-ja.com

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

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

command -option:text  
whatever

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

では、改行文字を入力したり、cmd.exeに複数行のコマンドを作成したりするにはどうすればよいでしょうか。

24
rudimenter

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

command -option:text^

whatever

Windowsのcmd.exeを使用していることを前提としていますXPまたは類似しています。これは実際のDOSではありません。実際のDOS(MS-DOS、Win3.1、Win95、Win98を使用している場合) 、WinME)、改行のエスケープがあるとは思わない。カスタムシェルを実行する必要がある。cmd.exeは、行の最後で^を入力してEnterキーを押すたびに、「More?」のプロンプトを表示する、Enterキーをもう一度押すと、実際にエスケープ/改行が埋め込まれます。

22
Darth Android

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

C:\>ver

Microsoft Windows [Version 6.3.9600]

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

C:\>

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

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

使用例:

%PATH%または%CLASSPATH%環境変数を読み取って、そこにあるものとその順序の概要をすばやく取得しようとしていますが、pathが返すテキストの壁は判読できません。次に、これはすばやく入力できるものです。

echo %path:;=◙% >con

編集:

元のメソッドが機能しなくなったcmd.exeの新しいバージョンに対してBrent Rittenhouseが発見した>con回避策を追加しました。

4
Amit Naidu

^の出力は保存可能です

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 . . .
1
ilias

これがうまくいくかどうかはわかりませんが、&echoを付けてください(次のスペースが重要です)。新しい行で必要な各ステートメントの間。私は単純なバットファイルでこれを試しました

echo %1

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

したがって、cmd行

testNewLines first line&echo Second Line&echo Third line

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

一行目
二行目
3行目

1
Haydar

アミットの答えを拡張する( https://superuser.com/a/1132659/955256 )レガシーコンソールを使用せずに任意のフォントで実行する方法を見つけました。

行をalt-10文字でエコー出力し、conにリダイレクトするだけで動作します。

たとえば、次の場合:

(エコー改行検出されたrigghhhtt◙^ <--- HERE!)> CON

編集:おもしろいことに、リダイレクトを最初に次のように置くことができるようです:

> CONエコー改行が検出されたrigghhhtt◙^ <---ここ!

変だよね?

次の出力が表示されます。


New-line detected rigghhhtt  
<-- HERE!

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

ここ は、このANDキャリッジリターンで実行できるより堅牢な例であり、完全に独立して動作します!:

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

楽しい!

1

あなたは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"

ほら、それほど難しいことではありません。

0
user1686