Создание подкаталогов с использованием первых двух символов имени файла в пакетном файле

Я пытаюсь создать пакетный файл, который будет зацикливаться на списке файлов JPG/PNG в папке и создавать подкаталоги, используя первые 2 символа этих имен изображений. После создания подкаталогов изображение будет перемещено в нужную подпапку.

Например, ABC.jpg и DEF.png создадут AB и DE, а ABC.jpg переместят в AB, а DEF.png — в DE.

Проблема, с которой я сталкиваюсь, заключается в извлечении первых двух символов и создании подкаталогов. Вот соответствующий код, который у меня есть до сих пор:

for %%A in (*.jpg,*.png) do (

  set _xx=%%A

  md %_xx:~0,2%
)

[Обработка ошибок/дублирования, а само перемещение файла удалено для ясности]

Вывод переменной _xx не показывает присвоенного ей значения, однако вывод %%A дает правильное имя файла.

Запуск этого скрипта фактически создает 2 подкаталога с именами «2» и «~ 0».

Какие-либо предложения?


person mecsco    schedule 15.11.2010    source источник


Ответы (1)


Вам нужно использовать

setlocal enabledelayedexpansion

вверху файла, а затем вместо

md %_xx:~0,2%

использовать

md !_xx:~0,2!
person Vicky    schedule 15.11.2010