Нужен .bat, который создаст папку на основе имени файла

Нужен .bat, который создаст папку на основе имени файла

Мне нужен .bat, который создаст папки на основе имен файлов и поместит файлы внутрь. У меня имена отформатированы так:

string1 - string2 - string3 - string2 - string3_number.jpg

Я нахожу команду, которая возьмет 3 первых строки, как мне нужно, но не могу заставить ее работать дальше. Когда я пытаюсь вставить эту команду в bat, она создает только папку с именем "--".

for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (set string1=%%a&set string2=%%b&set string3=%%c
md "%string1%-%string2%-%string3%")

Отключение @echo и установка local перед этим в .bat не работают. Может ли кто-нибудь помочь сделать так, чтобы он создавал папки на основе имен и помещал в них файлы? Я прочитал эти сообщения, но все еще не могу даже создать папки:

решение1

Из-заотложенноерасширениетребуется при настройкеииспользование var в (блоке кода) не работает.

Но поскольку вы не меняете переменные, это вообще не нужно.

@Echo off & Setlocal EnableDelayedExpansion

for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (
  set "Folder=%%a-%%b-%%c"
  Rem to remove the trailing space from the Folder
  set "Folder=!Folder:~0,-1!"
  If not exist "!Folder!\" MD "!Folder!"
)

Чтобы переместить файлы, это тоже неправильный подход: сначала нужно выполнить итерацию файлов, а затем разделить их, как указано выше.

Связанный контент