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:
- Crie em lote uma pasta com base no nome do arquivo e mova vários arquivos relacionados para a pasta criada
- Precisa de um script para criar pastas com base em nomes de arquivos e mover arquivos automaticamente
- Crie pastas em lote com base em parte do nome do arquivo e mova os arquivos para essa pasta
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.