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:
- Cree por lotes una carpeta según el nombre del archivo y mueva varios archivos relacionados a la carpeta creada
- Necesita una secuencia de comandos para crear carpetas basadas en nombres de archivos y mover archivos automáticamente
- Cree carpetas por lotes según parte del nombre del archivo y mueva archivos a esa carpeta
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.