2013-12-11 156 views
0

在我目前正在處理的批處理腳本上,我遇到了一些問題。 我想要發生的是將變量設置爲自身,但後面跟着一個百分比標記,一個字母,一個來自for /l (#,#,#)循環的數字,然後是另一個百分比符號。我的代碼目前如下;批量設置變量錯誤;變量(%)(字符串)(%% A)(%)?

set value1=1 
set value2=10 
for /l %%a in (%value1%,1,%value2%) do (
set variable1=%variable1%%b%%a% 
) 

即使循環了這10次,這也不會給我%variable1%的值。我已經嘗試在頂部添加'variable1 ='(沒有撇號),但是這給了我相同的結果。在四處搜尋之後,我發現我應該試着取消%'s在'b'之前和'a'之後 - 在他們面前使用%' - ,我的代碼就這樣結束了。

set value1=1 
set value2=10 
set variable1= 
for /l %%a in (%value1%,1,%value2%) do (
set variable1=%variable1%%b%%a% 
) 

這是我得到的最接近,但%變量1%,將值改爲 '%B1%',那麼 '%B2%',那麼 '%B3%' 等取而代之平鋪起來的彼此相鄰。

我希望的結果是,在循環結束時,%​​variable1%的值爲; %b1%%b2%%b3%%b4%%b5%%b6%%b7%%b8%%b9%%b10%

我的代碼出錯了嗎?它似乎應該給我我期望的輸出,但很清楚,事實並非如此。

在先進的感謝,

回答

0

試試這個:

@echo off 
setlocal EnableDelayedExpansion 

set value1=1 
set value2=10 
set variable1= 
for /l %%a in (!value1!,1,!value2!) do (
    set percent=%% 
    set variable1=!variable1!!percent!b%%a!percent! 
) 
echo !variable1! 

您必須添加setlocal EnableDelayedExpansion,因爲這將有助於expand the variable at execution time rather than at parse time

+0

工程就像一個魅力,非常感謝你。但是,爲了我自己的好奇心,不要使用!作爲%的替代,告訴它用setlocal'd'EnableDelayedExpansion'來對待它? – Destrotant

+0

很高興幫助:D – Dale

+0

@Destrotant是的,你是對的:) – Dale