2015-11-08 72 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

答案去斯蒂芬。我会发誓我试过这个,但显然我没有正确地尝试它! –