2012-02-24 72 views
15

非常簡單,我猜...我需要通過向下面的循環索引變量(%% i)添加前導零來獲得可用的變量。Win bat文件:如何將前導零添加到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 

怎麼樣? 我試過以下,但我不能在獲得的價值了%%變量i INTE的var_ ...

@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

羅布範德瓦Woude [列出了幾種不同的方法](http://www.robvanderwoude.com/battech_leadingzero.php)與沿兩個添加和移除前導零他們的優點和缺點。 – Synetech 2014-04-25 06:17:58

回答

34

前綴字符串以零,然後採取所需的數

@echo off 
set count=5 
setlocal EnableDelayedExpansion 

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

輸出:從右側字符

001 
002 
003 
004 
005 
7

使用setlocal enabledelayedexpansion,該溶液是這樣的:

@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 

這裏是一個很好的參考:http://blog.crankybit.com/why-that-batch-for-loop-isnt-working/

+0

謝謝你,vaisakh – Cambiata 2012-02-24 12:49:54

相關問題