2010-06-21 4 views

Répondre

3

Cela ne marchera jamais car la référence à %var% est résolu lorsque le corps de la boucle est analysée. Vous devez activer l'extension de variable retardée et utiliser à la place !var!:

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
FOR /F "tokens=* delims= " %%G IN ('dir') DO (
    SET VAR=%%G 
    ECHO !VAR! 
) 
ENDLOCAL 

Vous pouvez lire tout cela par type SET /? à une ligne de commande ;-)

1

Vous avez besoin d'expansion retardée:

@setlocal enableextensions enabledelayedexpansion 
@echo off 
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
    set var=%%G 
    echo !var! 
) 
endlocal 

La raison pour laquelle cela ne semble pas fonctionner est que %var% est évalué au moment où la commande entière est analysée. La commande est entière quatre lignes de l'instruction for. En utilisant l'expansion retardée, vous reportez l'évaluation de !var! à lorsque le echo réel est exécuté, lorsqu'il a été défini correctement.

Questions connexes