Windows CMD - 使用编号变量

时间:2015-11-08 12:16:27

标签: windows variables cmd numbered

如果之前有人问这个问题,我找不到它。

我想我知道一个解决我实际问题的方法,但它有点笨拙;所以这更像是一个谜题。我想。

我想设置12个变量:

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文件询问%01%中包含的内容,我会返回CMD文件的名称(总是%0)加上数字1.对于%10%到%12%,我接收%1的内容,在我的情况下到目前为止已经为空,加上变量名的第二位。

我正在根据日期将文件移动到存储服务器。例如,这些文件名为“2015-01-01 Blah,Blah,Blah.txt”。我可以使用其他地方获得的代码来查找年份为token1,将月份作为token2。

存储目的地有一个2015年的文件夹,里面是子文件夹,“01 - January”,“02 - February”,依此类推。

我总是可以为每个文件做一个彻底的“if token2 =”每个文件,但我想知道是否有办法简化逻辑:移动%1 token1 \ token2,其中01扩展为“ 01 - 1月“,无需每个月都通过我的方式。

开始的代码:

@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%

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用延迟扩展:

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