PDA

View Full Version : [Batch] Escaping dei caratteri < e>


23Andrea
06-04-2020, 16:18
Ciao.
In un ciclo FOR, un comando ECHO restituisce le righe di un file di testo tab-delimited, che contiene all'inizio di ogni riga un carattere ">" o "<".
Se il comando ECHO č seguito da una pipe, si verifica un problema di escaping che puņ essere risolto con la sequenza "^^%%G":

file di testo Test.txt:
> pippo pluto paperino
< tizio caio sempronio

@FOR /f "tokens=1,* delims= " %%G IN (Test.txt) DO @(
ECHO ^^%%G %%H|FINDSTR .
)
@PAUSE
EXIT

Ma io ho bisogno di utilizzare il comando CALL ECHO, per ottenere l'espansione ritardata delle variabili senza utilizzare i caratteri "!", quindi lo script diventa:

@FOR /f "tokens=1,* delims= " %%G IN (Test.txt) DO @(
CALL ECHO ^^%%G %%H|FINDSTR .
)
@PAUSE
EXIT

che perņ provoca il troncamento dei primi due campi delle righe:

pluto paperino
caio sempronio

Esiste una sequenza di caratteri che impedisca l'escaping anche in questo caso?
Grazie.

misterx
07-04-2020, 14:18
e se metti 2 invece di 1 ?


@FOR /f "tokens=2,* delims= " %%G IN (Test.txt) DO @(
CALL ECHO ^^%%G %%H|FINDSTR .
)
@PAUSE
EXIT

23Andrea
07-04-2020, 15:03
Non so...ma come farei poi a recuperare il primo token?

misterx
07-04-2020, 16:22
se togli il tab tra %%G e %%H l'output č il seguente:

> pippo pluto paperino
< tizio caio sempronio

se togli il tab come sopra e metti 2 in luogo di 1

pippo pluto paperino
tizio caio sempronio


vedi un po tu