Inserimento \ r \ n nel parametro su Windows


1

Sto usando FFmpeg su Windows, dove ho bisogno di inserire un \r\n in un parametro stesso.

ffmpeg … -headers "X-Test: Test\r\nX-Test-2: Test 2\r\n" …

Mentre questo funzionerà bene sotto Linux e così via, non funziona da un normale prompt dei comandi di Windows 10. Inoltre non funziona sotto Bash sotto Windows. In entrambi i casi, un letterale \r\n (backslash, r, backslash, n caratteri) vengono inviati.

Ho provato ad usare Alt + 13 Alt + 10, e mentre questo sembrava inserire caratteri, sono stati interpretati come 0xE299AA 0xE29799 di FFmpeg.

Questa domanda è simile a Come posso inserire una nuova riga in un comando cmd.exe? , tranne che non sono legato a cmd.exe. Sono felice di utilizzare qualsiasi shell finché posso usarlo sotto Windows, se ci sono suggerimenti. Questo è possibile tramite PowerShell in qualche modo? O magari inserendo i miei parametri in un file di testo e inserendolo come valore di parametro?


Vuoi una soluzione per Bash, PowerShell o cmd?
— EBGreen

@EBGreen Non importa ... nessuno di questi va bene finché è per Windows.
— Brad

@PimpJuiceIT Che funziona nella riga di comando di PowerShell !!! Grazie! Vuoi postarlo come risposta?
— Brad

Ecco come hai suggerito con la logica di esempio che ho usato in passato.
— Pimp Juice IT

@ PimpJuiceIT Sì, è quello che ha funzionato! Veramente semplice, grazie.
— Brad

Risposte:


1

In PowerShell, puoi usare backtick-r-backtick-n e utilizzare i backtick al posto dei backslash prima del r e il n per il CRLF parti del comando backtick "r" backtick "n" .

Questo richiede solo questa modifica al comando esistente

ffmpeg … -headers "X-Test: Test`r`nX-Test-2: Test 2`r`n"

Ulteriori risorse


1

Bash ha $'…' sintassi per questo. Dovrebbe funzionare indipendentemente dal sistema operativo.

ffmpeg … -headers $'X-Test: Test\r\nX-Test-2: Test 2\r\n' …

A partire dal Bash Manuale di riferimento :

Parole della forma $'string' sono trattati appositamente. La parola si espande a string, con caratteri di escape backslash sostituiti come specificato dallo standard ANSI C. Le sequenze di escape di backslash, se presenti, vengono decodificate come segue:

[...]

\n
nuova linea

\r
ritorno a capo

[...]

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.