Necesita .bat que creará una carpeta basada en el nombre del archivo

Necesita .bat que creará una carpeta basada en el nombre del archivo

Necesito .bat que creará carpetas basadas en nombres de archivos y colocará archivos dentro. Tengo nombres formateados así:

string1 - string2 - string3 - string2 - string3_number.jpg

Descubrí un comando que tomará las 3 primeras cadenas que necesitaba, pero no puedo hacerlo funcionar más. Cuando intento poner este comando en bat, solo aparece una carpeta llamada "--".

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%")

Desactivar @echo y setlocal antes de esto en .bat no funciona. ¿Alguien puede ayudar a corregirlo para que cree carpetas basadas en nombres y coloque archivos? Leí estas publicaciones pero todavía ni siquiera puedo crear carpetas:

Respuesta1

Porqueexpansión retrasadaes necesario al configuraryusar una var en un (bloque de código) no funciona.

Pero como no cambias las variables, eso no es necesario en absoluto.

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

Para mover archivos también, ese es el enfoque incorrecto, primero debe iterar los archivos y luego dividirlos como se indica arriba.

información relacionada