Precisa de .bat que criará uma pasta com base no nome do arquivo

Precisa de .bat que criará uma pasta com base no nome do arquivo

Eu preciso de .bat que crie pastas com base em nomes de arquivos e coloque os arquivos dentro delas. Tenho nomes formatados assim:

string1 - string2 - string3 - string2 - string3_number.jpg

Eu descubro o comando que usará as três primeiras strings conforme necessário, mas não consigo fazê-lo funcionar mais. Quando tento colocar este comando no bat, ele cria apenas uma pasta chamada "--".

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

colocar @echo off e setlocal antes disso em .bat não funciona, alguém pode ajudar a consertar isso, então ele criará pastas com base em nomes e colocará arquivos. Eu li essas postagens, mas ainda não consigo criar pastas:

Responder1

Por causa deexpansão atrasadaé necessário ao definireusar um var em um (bloco de código) não funciona.

Mas como você não altera os vars, isso não é necessário.

@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 também mover arquivos que são a abordagem errada, você deve primeiro iterar os arquivos e depois dividi-los como acima.

informação relacionada