Copia più righe dal prompt dei comandi di Windows senza forzature


16

È possibile copiare più righe dal prompt dei comandi di Windows senza che venga inserita una nuova riga in cui ciascuna riga raggiunge la fine del terminale?

Ad esempio, se ho la seguente riga nella console:

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

Se lo seleziono e lo copio, dopo la parola "alcuni" riceverò una riga che dovrò eliminare manualmente.

Esiste un modo per copiare i dati (comando che verrà analizzato, output stampato) nella forma in cui vengono interpretati / stampati, piuttosto che con linee rigide?


1
In Win 7/8 c'è un clip.exe, che reindirizza l'input negli appunti. Puoi usarlo come c:\> echo your -command | clip.exe. Ma è più adatto per un output di comando ..
settimana

afaik non esiste un modo per farlo. ma forse puoi combinare qualcosa come un breve script di autoit con clip.exe per archiviare il tuo obiettivo
weberik

1
da Windows 10 il comportamento predefinito includerà la selezione della linea, quindi non più problemi
phuclv

Risposte:


13

Il prompt dei comandi di Windows è notoriamente rotto in questo aspetto. Non è possibile ottenere il comportamento del Terminale Linux (almeno per pre-Windows 10 secondo il commento di Luu).

Tuttavia, esiste una funzione oscura in cmd.exe che aiuta: Tenendo premuto Maiusc mentre si fa clic con il pulsante destro del mouse nell'area selezionata (da copiare) verranno rimosse TUTTE le nuove righe nel testo copiato.

Se si desidera selezionare un'unica riga di comando lunga (che si estende su più linee terminali), ciò fa quello che si desidera. Tuttavia, rimuoverà sempre tutte le nuove righe, quindi non è possibile selezionare più righe di comando (o uno script) in modo ragionevole.

Procedura dettagliata:

  • Seleziona la riga di comando lunga usando il pulsante sinistro del mouse
  • Premere il tasto MAIUSC
  • Fare clic con il tasto destro nell'area selezionata (per copiare)
  • Rilasciare il turno
  • Ora il testo selezionato è nel buffer di copia senza nuove righe e puoi ad esempio incollarlo di nuovo in cmd.exe usando il tasto destro del mouse

Interessante, non avevo mai sentito parlare di quella caratteristica. Sembra che sia buono come sta per arrivare. Non uso più Windows, ma quando avrò la possibilità di confermarlo accetterò questa risposta. :-)
Adam Millerchip,

1
da Windows 10 otterrai un comportamento Linux di default
phuclv,

... quindi "Non è possibile ottenere il comportamento del Terminale Linux" non è corretto
phuclv,

@Luu: Grazie per aver aggiunto le informazioni su Windows 10. Ma cosa intendi con 'di default'? Ciò suggerisce che esiste un comportamento alternativo per i sistemi precedenti a Windows 10, che non esiste, quindi il tuo commento è fuorviante. Inoltre: chi utilizza Windows 10? (SCNR)
Johannes Overmann,

1
Uso Windows 10 e funziona quando si copia l'output dei comandi ma non quando si copiano le istruzioni dal prompt dei comandi. Esempio: 1) Digitare un comando che si estende su più righe nel prompt dei comandi; 2) copiarlo - anche le NewLine indesiderate andranno negli Appunti).
Ivan Akcheurov,

3

Un'altra opzione è quella di aprire il menu di scelta rapida della barra del titolo della finestra della console, andare su Proprietà e rendere la larghezza del buffer dello schermo abbastanza grande da non far finire le cose. (9999 sembra essere il valore massimo.)

Se devi farlo molto, puoi modificare l'opzione in Predefiniti anziché Proprietà.

Naturalmente, questo metodo si interrompe se le righe sono più lunghe di 9999 caratteri.


1
Bella idea anche! Meno oscuro da usare, ma meno visibilità.
Johannes Overmann,

1
@Abraxas Ho riscritto la risposta in modo molto più dettagliato.
1j01

0

Per abilitarlo per Windows 10:

Con una finestra "cmd" o "Windows Powershell", vai alle proprietà (fai clic sull'icona in alto a sinistra) e seleziona l'opzione "Abilita selezione a capo".

Il mio prompt di Powershell non aveva questo abilitato, abilitandolo ha fatto il trucco per me.


-2

Basta copiare il codice nel blocco note, quindi nella barra dei menu, fare Formatclic su quindi fare clic suWord Wrap


-4

Utilizzare SET e quindi combinare le parti nell'espressione. Inoltre è possibile fare per tali scopi file batch o macro.

@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"

1
Questa risposta non ha nulla a che fare con la domanda. Dov'è la parte della copia? Dov'è la parte terminale di Windows?
Johannes Overmann,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.