2015-11-08 75 views
0

如果之前在這裏提到過,我沒有找到它。Windows CMD - 使用編號變量

我想我知道解決我的實際問題的方法,但它會變得有點笨拙;所以這更像是一個難題,我猜。

我想設置12個變量:如果我使用一個CMD文件要問什麼包含在%真實01%

set 01=01 - January 
set 02=02 - February 
set 03=03 - March 
set 04=04 - April 
set 05=05 - May 
set 06=06 - June 
set 07=07 - July 
set 08=08 - August 
set 09=09 - September 
set 10=10 - October 
set 11=11 - November 
set 12=12 - December 

,我返回了CMD文件的名稱(這是永遠%0)加上數字1.對於%10%到%12%,我收到%1的內容,在我的情況下,這個內容是空的,再加上變量名的第二個數字。

我正在將基於日期的文件移動到存儲服務器。例如,這些文件被命名爲「2015-01-01 Blah,Blah,Blah.txt」。我可以使用其他地方獲得的代碼來查找年份爲token1,月份爲token2。

存儲目標有2015年的文件夾,裏面是子文件夾,「01 - 1月」,「02 - 2月」等。

我總是可以對每個單個文件做一個徹底的「if token2 =」每個奇怪的月份,但我想知道是否有一種方法來簡化邏輯:移動%1 token1 \ token2,其中01被擴展爲「01 - 01月」,而不需要每月通過我的方式。

代碼開始從:

@echo off 
set 01=01 - January 
set 02=02 - February 
set 03=03 - March 
set 04=04 - April 
set 05=05 - May 
set 06=06 - June 
set 07=07 - July 
set 08=08 - August 
set 09=09 - September 
set 10=10 - October 
set 11=11 - November 
set 12=12 - December 

:: set /p cr_mo= "Pick a month, any month! " 
:: echo CR_Mo=%CR_Mo% 
:: echo Destination folder: %CR_Mo% 

echo 01=%01% 
echo 02=%02% 
echo 03=%03% 
echo 04=%04% 
echo 05=%05% 
echo 06=%06% 
echo 07=%07% 
echo 08=%08% 
echo 09=%09% 
echo 10=%10% 
echo 11=%11% 
echo 12=%12% 

回答

3

最簡單的方法是使用延遲擴展:!

@echo off 
setlocal enabledelayedexpansion 
set 01=01 - January 
echo 01=!01! 
+1

'+ 01'總之,只要準確地來說是最簡單的方法是不使用以數字開頭的變量名稱。 –

+0

@MCND我同意。應閱讀「最簡單的方法,如果你想/必須使用以數字開頭的變量名稱」。 – Stephan

+0

答案去斯蒂芬。我會發誓我試過這個,但顯然我沒有正確地嘗試它! –