2015-11-08 4 views
0

Если это было задано здесь раньше, я не нахожу его.Windows CMD - используйте нумерованные переменные

Я думаю, что знаю путь вокруг моей реальной проблемы, но это будет немного громоздким; так что это скорее головоломка, я думаю.

Я хочу установить 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». Я могу использовать код, полученный здесь в другом месте, чтобы узнать год как токен1 и месяц как токен2.

У объекта хранения есть папка на 2015 год, а внутри - подпапки, «01 - январь», «02 февраля» и т. Д.

Я всегда могу сделать тщательный «if token2 =» каждый месяц для каждого отдельного файла, но мне интересно, есть ли способ упорядочить логику: Move% 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% 

ответ

3

Самый простой способ заключается в использовании замедленное расширение:!

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

'+ 01' В любом случае, просто чтобы быть точным, то самый простой способ не использовать имена переменных, начинающиеся с цифр. –

+0

@MCND Согласен. Должен читать «Самый простой способ, если вы хотите/должны использовать имена переменных, начинающиеся с цифр». – Stephan

+0

Отвечает на Стефана. Я бы поклялся, что я пробовал это, но, очевидно, я не пробовал это правильно! –

Смежные вопросы