/ / Lettura di caratteri speciali dal nome file alla variabile: finestre, file batch, caratteri speciali

Lettura di caratteri speciali dal nome del file in variabili - windows, file batch, caratteri speciali

Ho migliaia di file i cui nomi di file contengono il simbolo "caret", ma quando provo ad assegnarli a una variabile, ottengo risultati strani. Se il nome file è "01 ^ Driver"s Seat.flac," ad esempio, il comando echo %1 ritorna "(path)1 ^^ Driver"s Seat.flac," con un cursore aggiuntivo e l'elaborazione di arresti. Come posso ottenere l'output corretto?

risposte:

1 per risposta № 1

Il raddoppio dei punti di inserimento è un problema di CALL comando (vedi: Come funziona il parser batch).

Questo può essere evitato usando la chiamata di una funzione con variabili per riferimento anziché variabili per valore.

call: func "% variabileNome%" - per valore
call: func variabileName - per riferimento

call :func filename

...

:func
setlocal EnableDelayedExpansion
set "filename=!%1!"
echo filename: !filename!