Necessita de .bat que fará a pasta baseada no nome do arquivo

2

Eu preciso de .bat para criar pastas baseadas em nomes de arquivos e colocar arquivos dentro delas. Eu tenho nomes formatados assim:

string1 - string2 - string3 - string2 - string3_number.jpg

Eu descubro o comando que vai pegar 3 primeiras strings como eu precisava, mas não posso fazer isso funcionar ainda mais. Quando eu tento colocar este comando em bat, ele faz 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%")

colocando @echo off e setlocal antes disso no .bat não funciona alguém pode ajudar a fazer certo, então ele fará pastas baseadas em nomes e colocará arquivos. Eu leio esses posts, mas ainda não consigo criar pastas:

por Phenixsus 06.08.2018 / 20:21

1 resposta

3

Devido a delayedexpansion é necessário ao configurar e usando um var em a (bloco de códigos ) não funciona.

Mas, como você não altera as variantes que não são necessárias.

@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 também os arquivos que estão errados, você deve primeiro fazer uma iteração dos arquivos e dividi-los como acima.

    
por 06.08.2018 / 20:39