Kopieren Sie mehrere Zeilen von der Windows-Eingabeaufforderung ohne erzwungene Zeilenumbrüche

16

Ist es möglich, mehrere Zeilen von der Windows-Eingabeaufforderung zu kopieren, ohne eine neue Zeile einzufügen, in der jede Zeile das Ende des Terminals erreicht?

Zum Beispiel, wenn ich die folgende Zeile in der Konsole habe:

c:\very_long_path_here\more_path_here>command_i_want_to_copy -with -some
arguments that wrap over lines.

Wenn ich dies auswähle und kopiere, erhalte ich nach dem Wort 'some' eine neue Zeile, die ich manuell löschen muss.

Gibt es eine Möglichkeit, die Daten (Befehl, der analysiert wird, Ausgabe, die gedruckt wird) in der Form zu kopieren, in der sie interpretiert / gedruckt werden, anstatt mit fest umbrochenen Zeilen?

Adam Millerchip
quelle
1
In Win 7/8 gibt es eine clip.exe, die Eingaben in die Zwischenablage umleitet. Du kannst es gerne benutzen c:\> echo your -command | clip.exe. Aber es ist besser für eine Befehlsausgabe geeignet.
Woche
afaik gibt es keinen eingebauten Weg, um dies zu tun. aber vielleicht können Sie so etwas wie ein kurzes autoit-Skript mit clip.exe kombinieren, um Ihr Ziel zu archivieren
weberik
1
seit windows 10
bricht

Antworten:

13

Die Windows-Eingabeaufforderung ist in dieser Hinsicht bekanntermaßen fehlerhaft. Es ist nicht möglich, das Verhalten des Linux-Terminals zu ermitteln (zumindest für Vorgängerversionen von Windows 10 gemäß Luus Kommentar).

Es gibt jedoch eine undurchsichtige Funktion in cmd.exe, die hilft: Wenn Sie die Umschalttaste gedrückt halten, während Sie mit der rechten Maustaste in den ausgewählten Bereich klicken (um ihn zu kopieren), werden ALLE Zeilenumbrüche im kopierten Text entfernt.

Wenn Sie eine einzelne lange Befehlszeile auswählen möchten (die sich über mehrere Terminalzeilen erstreckt), können Sie die gewünschten Aktionen ausführen. Es werden jedoch immer alle Zeilenumbrüche entfernt, sodass es nicht möglich ist, mehrere Befehlszeilen (oder ein Skript) auf sinnvolle Weise auszuwählen.

Detaillierte Vorgehensweise:

  • Wählen Sie mit der linken Maustaste eine lange Befehlszeile aus
  • Drücken Sie die Umschalttaste
  • Rechtsklick in den ausgewählten Bereich (zum Kopieren)
  • Schicht loslassen
  • Nun befindet sich der ausgewählte Text ohne Zeilenumbrüche im Kopierpuffer und kann beispielsweise mit der rechten Maustaste wieder in cmd.exe eingefügt werden
Johannes Overmann
quelle
Interessant, ich hatte noch nie davon gehört. Es sieht so aus, als wäre es so gut wie es nur geht. Ich benutze keine Fenster mehr, aber wenn ich die Möglichkeit habe, dies zu bestätigen, akzeptiere ich diese Antwort. :-)
Adam Millerchip
1
Seit Windows 10 wird standardmäßig Linux-Verhalten angezeigt
phuclv
... also "Es ist nicht möglich, das Verhalten des Linux-Terminals zu ermitteln" ist falsch
phuclv
@Luu: Vielen Dank, dass Sie die Informationen zu Windows 10 hinzugefügt haben. Aber was meinen Sie mit "Standard"? Dies deutet darauf hin, dass es für Systeme vor Windows 10 ein alternatives Verhalten gibt, das es nicht gibt, sodass Ihr Kommentar irreführend ist. Außerdem: Wer verwendet Windows 10? (SCNR)
Johannes Overmann
1
Ich verwende Windows 10 und es funktioniert beim Kopieren der Ausgabe von Befehlen, aber nicht beim Kopieren von Anweisungen von der Eingabeaufforderung. Beispiel: 1) Geben Sie einen Befehl ein, der sich über mehrere Zeilen in der Eingabeaufforderung erstreckt. 2) kopiere es - die unerwünschten NewLines werden ebenfalls in die Zwischenablage kopiert.
Ivan Akcheurov
3

Eine andere Möglichkeit besteht darin, das Kontextmenü der Titelleiste des Konsolenfensters zu öffnen, zu Eigenschaften zu wechseln und die Breite des Bildschirmpuffers so groß zu machen, dass nichts umbrochen wird. (9999 scheint der Maximalwert zu sein.)

Wenn Sie dies häufig tun müssen, können Sie die Option in den Standardeinstellungen anstelle von Eigenschaften ändern.

Diese Methode funktioniert natürlich nicht, wenn die Zeilen länger als 9999 Zeichen sind.

1j01
quelle
1
Gute Idee auch! Weniger dunkel in der Anwendung, aber weniger gut sichtbar.
Johannes Overmann
1
@Abraxas Ich habe die Antwort viel ausführlicher umgeschrieben.
Januar,
0

So aktivieren Sie dies für Windows 10:

Navigieren Sie in einem der Fenster "cmd" oder "Windows PowerShell" zu den Eigenschaften (klicken Sie oben links auf das Symbol) und wählen Sie die Option "Zeilenumbruchauswahl aktivieren".

Bei meiner Powershell-Eingabeaufforderung war dies nicht aktiviert, und es hat den Trick für mich getan.

Jørn Jensen
quelle
-2

Kopieren Sie den Code einfach in den Editor und klicken FormatSie dann in der Menüleiste auf und dann aufWord Wrap

Prime Jay
quelle
-4

Verwenden Sie das SET und kombinieren Sie dann die Teile im Ausdruck. Zusätzlich können Sie für solche Zwecke eine Batch-Datei oder ein Makro erstellen.

@set WAIKTools=%ProgramFiles%\WAIK\Tools\amd64
@set LabelCD=GRTMPVOL_RU

@IF "%time:~0,1%" GTR "0" SET current=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%@%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
@IF "%time:~0,1%" LSS "0" SET current=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%@0%TIME:~1,1%.%TIME:~3,2%.%TIME:~6,2%

"%WAIKTools%\oscdimg.exe" -h -m -n -l%LabelCD% -b"%cd%\boot\w32sp3.bif" "BUILD-%current%" "BUILD-%current%-ISO\%LabelCD%.ISO"
STTR
quelle
1
Diese Antwort hat nichts mit der Frage zu tun. Wo ist der Kopierteil? Wo ist das Windows-Terminal?
Johannes Overmann