【问题标题】:Windows CMD - use numbered variablesWindows CMD - 使用编号变量
【发布时间】:2016-02-09 04:42:16
【问题描述】:

如果以前在这里问过这个问题,我没找到。

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

我要设置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 - 一月”、“02 - 二月”等。

我总是可以在每个该死的月份对每个文件进行彻底的“if token2=”,但我想知道是否有一种方法可以简化逻辑:移动 %1 token1\token2,其中 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%

【问题讨论】:

    标签: windows variables cmd numbered


    【解决方案1】:

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

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

    【讨论】:

    • +!01! 无论如何,准确地说,最简单的方法是不要使用以数字开头的变量名。
    • @MCND 我同意。应该阅读“如果您想/必须使用以数字开头的变量名,最简单的方法。”
    • 回答交给斯蒂芬。我发誓我已经尝试过了,但显然我没有正确尝试!
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 2019-10-19
    • 1970-01-01
    • 2021-02-11
    • 2021-12-07
    • 2012-04-25
    • 1970-01-01
    • 2013-01-01
    相关资源
    最近更新 更多