2

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

string1 - string2 - string3 - string2 - string3_number.jpg

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

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 и setlocal перед этим в .bat не работает, может кто-то помочь исправить это так, что он будет создавать папки на основе имен и помещать файлы. Я читаю эти посты, но все еще не могу даже создавать папки:

1 ответ1

3

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

Но так как вы не меняете переменные, в которых нет необходимости.

@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!"
)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .