2012-02-24 9 views
15

Muy simple, supongo ... Necesito obtener una variable utilizable añadiendo ceros a la variable de índice de bucle (%% i) a continuación.Win bat file: ¿Cómo agregar ceros a una variable en un bucle for?

@echo off 
for /L %%i in (1, 1, 5) do (
    echo %%i 

    rem  How to create a variable j here as a 
    rem  result of adding leading zeros to %%i? (001, 002, 003 etc.) 

) 
pause 

¿Cómo? He intentado lo siguiente, pero no puedo obtener el valor de la variable i %% inte la var_ en una ...

@echo off & setlocal enableextensions 
for /L %%i in (1, 1, 5) do (
    echo %%i 
    set var_=00000%%i 
    set var_=%var_:~-5% 
    echo %var_% 
) 
pause 
+2

Rob van der Woude [listas de varios métodos diferentes] (http://www.robvanderwoude.com/battech_leadingzero.php) tanto de adición y eliminación de los principales ceros junto con sus pros y contras. – Synetech

Respuesta

34

Prefijo de la cadena de ceros y luego efectuar el recuento deseado de personajes de la derecha:

@echo off 
set count=5 
setlocal EnableDelayedExpansion 

for /L %%i in (1, 1, %count%) do (
    set "formattedValue=000000%%i" 
    echo !formattedValue:~-3! 
) 

Salidas:

001 
002 
003 
004 
005 
7

Utilizando el setlocal enabledelayedexpansion, la solución es la siguiente:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set count=5 

for /L %%i in (1, 1, %count%) do (
    echo %%i 
    set j=00%%i 
    rem to display intermediate values inside loop, surround with ! 
    echo !j! 
) 
endlocal 

Aquí es una buena referencia: http://blog.crankybit.com/why-that-batch-for-loop-isnt-working/

+0

Gracias, vaisakh – Cambiata

Cuestiones relacionadas