Windows:コマンドプロンプトで複数行コマンドを指定する方法


170

コマンドを次の行に拡張するにはどうすればよいですか?

基本的にLinuxのWindows代替

ls -l \
/usr/

ここでは、バックスラッシュを使用してコマンドを次の行に拡張します

ウィンドウと同等のものは何ですか?


+1の簡潔で簡潔なQ&A、stackoverflow.com
questions / 69068 /…

回答:


295

私のキーボードのほぼすべてのキーを試した後:

C:\Users\Tim>cd ^
Mehr? Desktop

C:\Users\Tim\Desktop>

したがって、^キーのようです。


13
Microsoftは独自の標準に準拠できないため、PowerShellでは機能しません。^と同等のPowerShellは `So C:\ Users \ Tim>
cd`

3
@RicJafeなぜそれをすべきなのか?PowerShellは完全に独立しています。PSの同等のキーは `です。
WhatIsHeDoing 2017年

それがpowershellにあるものについて何か考えはありますか?
Ryan

3
@RyanSeanWattrus同じ非常に科学的な方法を使用: `(l'accent grave)
Timbo

57

Windowsコマンドプロンプトで^は、コマンドラインの次の文字をエスケープするために使用されます。(同様\に文字列で使用されます。)コマンドラインでそのまま使用する必要がある文字には、先頭に^を付ける必要があります。そのため、改行で機能します。

参考として、エスケープが必要な文字(コマンド引数として指定され、引用符で囲まれていない場合)は次のとおりです。 &|()

したがって、あなたのLinuxの例に相当するのは(More?がプロンプトであることです):

C:\> dir ^
More? C:\Windows

15
'^'文字は行の最後の文字でなければなりません。それ以外の場合、最後にSPACEがあると、複数行コマンドは機能しません。
Dmytro Ovdiienko 2015年

6

キャレット文字は機能しますが、次の行は二重引用符で始めることはできません。たとえば、これは機能しません:

C:\ ^
"SampleText" ..

二重引用符なしで次の行を開始します(例としては有効な例ではありません)


1

この質問への回答を求めてここに来たが、OPが意味する方法、つまり複数行のCMDを単一の行でどのように機能させるかを正確に求めていない場合、私には一種の危険な答えがあります。

これを実際にパイピングを使用するもので使用しようとすると、findstr非常に問題があります。同じことがelsesの処理にも当てはまります。しかし、複数行の条件付きコマンドをバッチファイル経由ではなくCMDから直接実行したい場合は、これでうまくいくはずです。

コマンドプロンプトで直接実行するバッチに次のようなものがあるとします。

@echo off
for /r %%T IN (*.*) DO (
    if /i "%%~xT"==".sln" (
        echo "%%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file
        echo Dumping SLN file contents
        type "%%~T"
    )
)

これで、行継続カラット(^)を使用して、次のように手動で入力できますが、警告、これは面倒であり、失敗した場合は、もう一度入力する喜びを学ぶことができます。

まあ、それだけでは動作しません^括弧の内部メカニズム脱出のおかげで肩をすくめを少なくともいないとして書かれ。実際には、次のようにカラットを2倍にする必要があります。

@echo off ^
More? for /r %T IN (*.sln) DO (^^
More? if /i "%~xT"==".sln" (^^
More? echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file^^
More? echo Dumping SLN file contents^^
More? type "%~T"))

代わりに、|ループ/式の継続ごとに単一のパイプ()に交換することで、カラットを必要としないトラックの反対側から汚い卑劣なスクリプト作成者になることができます。

@echo off
for /r %T IN (*.sln) DO if /i "%~xT"==".sln" echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file | echo Dumping SLN file contents | type "%~T"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.