2012-02-24 60 views
15

Rất đơn giản, tôi đoán ... Tôi cần có một biến có thể sử dụng bằng cách thêm số 0 đứng đầu vào biến chỉ mục vòng lặp (%% i) bên dưới.Win bat file: Cách thêm số 0 vào một biến trong vòng lặp 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 

Làm cách nào? Tôi đã thử những điều sau đây, nhưng tôi không thể nhận được giá trị ra khỏi %% i biến inte các var_ tại một ...

@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 (http://www.robvanderwoude.com/battech_leadingzero.php) của cả hai thêm và loại bỏ hàng đầu cùng với số không ưu và nhược điểm của họ. – Synetech

Trả lời

34

Prefix chuỗi với số không và sau đó lấy số mong muốn của nhân vật từ phía bên phải:

@echo off 
set count=5 
setlocal EnableDelayedExpansion 

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

Đầu ra:

001 
002 
003 
004 
005 
7

Sử dụng setlocal enabledelayedexpansion, giải pháp là thế này:

01.
@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 

Đây là một tài liệu tham khảo tốt: [phương pháp danh sách khác nhau] http://blog.crankybit.com/why-that-batch-for-loop-isnt-working/

+0

Cảm ơn bạn, vaisakh – Cambiata

Các vấn đề liên quan