Skopiuj wiele wierszy z wiersza polecenia systemu Windows bez wymuszonych nowych linii

16

Czy można skopiować wiele wierszy z wiersza polecenia systemu Windows bez wstawiania nowej linii w miejscu, w którym każda linia osiąga koniec terminala?

Na przykład, jeśli mam następującą linię w konsoli:

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

Jeśli to zaznaczę i skopiuję, po słowie „some” otrzymam nowy wiersz, który będę musiał usunąć ręcznie.

Czy istnieje sposób na skopiowanie danych (polecenie, które zostanie przeanalizowane, wydruk zostanie wydrukowany) w formie, w jakiej jest interpretowane / drukowane, a nie za pomocą wierszy owiniętych?

Adam Millerchip
źródło
1
W Win 7/8 jest taki clip.exe, który przekierowuje dane wejściowe do schowka. Możesz go używać jak c:\> echo your -command | clip.exe. Ale jest bardziej odpowiedni dla wyjścia komendy ..
tydzień
afaik nie ma wbudowanego sposobu, aby to zrobić. ale może możesz połączyć coś w rodzaju krótkiego skryptu autoit z clip.exe, aby zarchiwizować swój cel
weberik 15.03.2013
1
ponieważ Windows 10 domyślne zachowanie
zawinie

Odpowiedzi:

13

Wiersz polecenia systemu Windows jest pod tym względem notorycznie łamany. Nie jest możliwe uzyskanie zachowania Linux Terminal (przynajmniej dla systemów starszych niż Windows 10 zgodnie z komentarzem Luu).

Jednak w cmd.exe znajduje się niejasna funkcja, która pomaga: Przytrzymanie klawisza Shift po kliknięciu prawym przyciskiem myszy wybranego obszaru (do skopiowania) usunie WSZYSTKIE nowe wiersze w kopiowanym tekście.

Jeśli chcesz wybrać jedną długą linię poleceń (obejmującą wiele linii terminalu), zrobi to, co chcesz. Jednak zawsze usunie wszystkie nowe wiersze, więc nie jest możliwe wybranie wielu linii poleceń (lub skryptu) w rozsądny sposób.

Szczegółowa procedura:

  • Wybierz długą linię poleceń lewym przyciskiem myszy
  • Naciśnij klawisz Shift
  • Kliknij prawym przyciskiem myszy wybrany obszar (aby skopiować)
  • Zwolnij zmianę
  • Teraz zaznaczony tekst znajduje się w buforze kopiowania bez znaków nowej linii i możesz na przykład ponownie wkleić go do cmd.exe za pomocą prawego przycisku myszy
Johannes Overmann
źródło
Ciekawe, nigdy nie słyszałem o tej funkcji. Wygląda na to, że to będzie tak dobre, jak się da. Nie korzystam już z systemu Windows, ale kiedy mam szansę to potwierdzić, zaakceptuję tę odpowiedź. :-)
Adam Millerchip,
1
od Windows 10 domyślnie dostaniesz zachowanie Linuxa
phuclv
... więc „Nie można uzyskać działania terminalu Linux” jest niepoprawny
phuclv
@Luu: Dziękujemy za dodanie informacji o systemie Windows 10. Ale co masz na myśli mówiąc „domyślnie”? Sugeruje to, że istnieje alternatywne zachowanie dla systemów starszych niż Windows 10, którego nie ma, więc twój komentarz jest mylący. Ponadto: Kto używa systemu Windows 10? (SCNR)
Johannes Overmann
1
Korzystam z systemu Windows 10 i działa on podczas kopiowania danych wyjściowych poleceń, ale nie podczas kopiowania instrukcji z wiersza polecenia. Przykład: 1) Wpisz polecenie obejmujące wiele wierszy w wierszu polecenia; 2) skopiuj - niechciane NewLines również trafi do schowka).
Ivan Akcheurov
3

Inną opcją jest otwarcie menu kontekstowego paska tytułowego okna konsoli, przejście do Właściwości i zwiększenie szerokości bufora ekranu, aby rzeczy się nie zawijały. (9999 wydaje się być wartością maksymalną.)

Jeśli musisz często to robić, możesz zmienić opcję Domyślne zamiast Właściwości.

Oczywiście ta metoda ulega awarii, jeśli wiersze są dłuższe niż 9999 znaków.

1j01
źródło
1
Dobry pomysł też! Mniej niejasne w użyciu, ale mniej widoczna.
Johannes Overmann
1
@Abraxas Przepisałem odpowiedź bardziej szczegółowo.
1j01
0

Aby włączyć to w systemie Windows 10:

W oknie „cmd” lub „Windows Powershell” przejdź do właściwości (kliknij ikonę w lewym górnym rogu) i wybierz opcję „Włącz zaznaczanie zawijania linii”.

Mój monit programu Powershell nie miał włączonej tej opcji, co umożliwiło mi załatwienie sprawy.

Jørn Jensen
źródło
-2

Po prostu skopiuj kod do notatnika, a następnie na pasku menu kliknij, Formata następnie kliknijWord Wrap

Prime Jay
źródło
-4

Użyj SET, a następnie połącz części wyrażenia. Dodatkowo możesz zrobić do takich celów plik wsadowy lub makro.

@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
źródło
1
Ta odpowiedź nie ma nic wspólnego z pytaniem. Gdzie jest część do kopiowania? Gdzie jest część terminalu Windows?
Johannes Overmann