Domanda

Ho un file (directories.txt) con i nomi delle directory, ciascuno su una singola linea e mi piace espandere la linea

C:\Documents and Settings\%USERNAME%\My Documents

Nel mio script per il nome reale dell'utente che esegue lo script. Tuttavia l'eco esce esattamente la stessa della linea e %USERNAME% non si espande.

FOR /f "tokens=*" %%X IN (directories.txt) DO (
    ECHO %%X
)

L'eco mostra "C: \ Documents and Settings \% username% \ Documenti", invece di C: \ Documents and Settings \ Janco \ Documenti

Tutte le idee?

È stato utile?

Soluzione

Sono riuscito a fare questa sostituzione variabile utilizzando:

SETLOCAL ENABLEDELAYEDEXPANSION

FOR /f "tokens=*" %%X IN (directories.txt) DO (
    SET DIR=%%X
    ECHO !DIR:%%USERNAME%%=%USERNAME%!
)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top