Inserindo \ r \ n no parâmetro no Windows

1

Estou usando o FFmpeg no Windows, onde preciso inserir um \r\n em um parâmetro em si.

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

Embora isso funcione bem no Linux e tal, ele não funciona em um prompt de comando normal do Windows 10. Ele também não funciona no Bash no Windows. Em ambos os casos, um literal \r\n (barra invertida, r, barra invertida, n caracteres) é enviado.

Eu tentei usar Alt + 13 Alt + 10 e, embora pareça inserir caracteres, eles foram interpretados como 0xE299AA 0xE29799 por FFmpeg.

Esta questão é semelhante a Como posso inserir uma nova linha em um comando cmd.exe? , exceto que eu não estou vinculado ao cmd.exe. Fico feliz em usar qualquer shell, desde que eu possa usá-lo no Windows, se houver alguma sugestão. Isso é possível via Powershell de alguma forma? Ou, talvez colocando meus parâmetros em um arquivo de texto e colocando-os como um valor de parâmetro?

    
por Brad 24.05.2018 / 20:14

2 respostas

1

No PowerShell, você pode usar eusebackticksnolugardasbarrasinvertidasantesdasporçõesrenparaaspartesCRLFdocomando-backtick" r "backtick" n " .

Isso requer apenas esta alteração no comando existente

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

Mais recursos

por 25.05.2018 / 02:02
1

O Bash tem a sintaxe $'…' para isso. Deve funcionar independentemente do SO.

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

De Manual de referência do bash :

Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:

[…]

\n
newline

\r
carriage return

[…]

    
por 24.05.2018 / 22:27