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

Я пытаюсь создать пакетный файл, который будет зацикливать список 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".

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

1 ответ

Решение

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

setlocal enabledelayedexpansion

в верхней части файла, а затем вместо

md %_xx:~0,2%

использование

md !_xx:~0,2!
Другие вопросы по тегам