Criando um script para mover as imagens para uma pasta levando o nome da foto

1

Olá eu estou tentando fazer um script para mover quase 3000 fotos para pastas, eu quero mover o grupo de fotos:

Example of name: 3a19gk-0-00-8hqGWOD

O grupo da imagem é: 3a19gk, o resto é o número da imagem.

Consegui criar este, mas está criando uma pasta por foto. Alguma maneira de criar uma pasta tendo apenas uma parte do nome?

@echo off
setlocal enabledelayedexpansion
set folderpath=D:\path
for %%f in (%folderpath%\*.*) do (
  set "foldername=%%~nf"
  md "!foldername:~0,-3!" >nul 2>&1
  move "%%f" "!foldername:~0,-3!"
) 
    
por José Vieiros 09.12.2017 / 22:22

2 respostas

1

Alguma maneira de criar uma pasta com apenas uma parte do nome?

Você precisa de um segundo (aninhado) for /f para analisar a primeira parte do nome.

Algo como o seguinte deve funcionar (aviso não testado):

@echo off
setlocal enabledelayedexpansion
set folderpath=D:\path
for %%f in (%folderpath%\*.*) do (
  rem get the folder name up to the first hyphen
  for /f "delims=-" %%g in ("%%f") do (
    set foldername=%%g
    )
  md "!foldername!" >nul 2>&1
  move "%%f" "!foldername!"
  ) 

Leitura Adicional

por 09.12.2017 / 22:38
0

Você pode utilizar as opções do comando FOR para que você só precise usar um comando FOR . Isso encurta o código um pouco.

@echo off
pushd D:\path
for /F "tokens=1* delims=-" %%G in ('dir /a-d /b *.*') do (
    md "%%~G" >nul 2>&1
    move "%%~G-%%~H" "%%~G"
)
popd 
    
por 13.12.2017 / 00:12

Tags