Ir ao conteúdo
  • Cadastre-se

Bat Renomear vídeos e acrescentar os dados da coluna "comprimento" do windows


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Boa noite.
Estou tentando criar um bat para que renomeie automaticamente os arquivos em vídeo gerados pelo software de gravação. 
Eles saem da seguinte forma:

 

AAAAA-111-AA111111111111_2024-05-21_012129_Ch1_02

 

Gostaria de renomeá-los até manter a seguinte estrutura:

 

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D0XX, onde XX seriam os minutos que aparecem na aba "comprimento". Vou colocar uma imagem exemplificando

 

Capturadetela2024-05-21032416.jpg.6d4955b94f68dbd12e1e1ffdf856d4ee.jpg

 

Com isso, a renomeação seria:

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D000, pois a parte de minutos vale 00.

Poderiam me dar uma luz?

Obrigado

Link para o comentário
Compartilhar em outros sites

@ricardo_br
Perdão pela demora.
Os vídeos são gravados em lotes de 30min, logo a duração máxima é de D030.

 

Caso renomeado com o mesmo nome, ele pode ser renomeado como DXXX +1?

Ao invés de: 

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D000

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D000 (1)

 

ou até mesmo um erro, ter algo do tipo:


O primeiro vídeo seria: 

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D000

O segundo vídeo seria 

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D001 (n+1)

o terceiro seria

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D002 (n+2)

e assim por diante.
é possível algo relacionado a isso?

Link para o comentário
Compartilhar em outros sites

 

Codigo Aqui

 

@echo off

:: Antes:  AAAAA-111-AA111111111111_2024-05-21_012129_Ch1_02
:: Depois: AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D0XX
:: XX == minutos como eles aparecem em comprimento do vídeo

:: Informe aqui a pasta onde estão os vídeos:
set Pasta=%userprofile%\desktop\videos

:Inicio
if not exist "%Pasta%" (
                        set /p "Pasta=Informe a pasta dos videos: "
                        goto: Inicio
                       ) 

pushd "%Pasta%"
for /f "delims=" %%a in ('dir /b *.mp4 *.mkv') do for /f "tokens=1-3 delims=_" %%b in ("%%~a") do (
                                                                                                   set "NO=%%~a"
                                                                                                   set "EXT=%%~xa"
                                                                                                   set "P1=%%~b"
                                                                                                   set "P2=%%~c"
                                                                                                   set "P3=%%~d"
                                                                                                   call :Renomear
                                                                                                  )

exit

:Renomear
for /f "tokens=2 delims=:" %%a in ('powershell "$Path = '%Pasta%';$shell = New-Object -COMOBject Shell.Application;$File = '%NO%';$shellFolder = $shell.Namespace($Path);$shellfile = $shellfolder.ParseName($File);$shellFolder.GetDetailsOF($shellfile, 27);"') do set "Min=%%a"

set P3=T-%P3:~0,2%-%P3:~2,2%-%P3:~4,2%-D0%Min%
IF NOT EXIST "%P1%-%P2%-%P3%%EXT%" (
                                    ren "%NO%" "%P1%-%P2%-%P3%%EXT%"
                                    goto :EOF
                                   )
set Contador=0
:Contador
set /a Contador+=1
IF NOT EXIST "%P1%-%P2%-%P3% (%Contador%)%EXT%" (ren "%NO%" "%P1%-%P2%-%P3% (%Contador%)%EXT%") else (goto :Contador)
goto :EOF

 

Link para o comentário
Compartilhar em outros sites

@ricardo_br Cara, muitíssimo obrigado.
Já tá me ajudando demais.
Só duas coisas que eu não to conseguindo fazer.
1º: O bat só funciona quando eu edito o arquivo e coloco o caminho da pasta manualmente. Caso não tenha o caminho da pasta, ao aparecer o item "Informe a pasta dos videos", ao adicionar o caminho ele não faz as alterações necessarias nos vídeos.

 

2º. No caso de arquivos duplicados, seria que o nome gerado após a alteração tivesse a minutagem acrescida de +1, for triplicado a minutagem acrescida de +2 e assim por diante? Por exemplo:

 

Ao invés de gerar:

WBMRL24-093-OS006000717036-2024-05-16-T-19-26-54-D030

WBMRL24-093-OS006000717036-2024-05-16-T-19-26-54-D030 (1)

WBMRL24-093-OS006000717036-2024-05-16-T-19-26-54-D030 (2)

 

Gerar:

WBMRL24-093-OS006000717036-2024-05-16-T-19-26-54-D030

WBMRL24-093-OS006000717036-2024-05-16-T-19-26-54-D031

WBMRL24-093-OS006000717036-2024-05-16-T-19-26-54-D032

 

A depender da minutagem que foi acrescida no vídeo.

Obrigado

Link para o comentário
Compartilhar em outros sites

Oi consertei aquela parte que não funciona se você tiver que digitar o nome quanto aquela parte onde você acrescenta aos minutos da para fazer sim mais o resultado pode ser de valores totalmente diferentes dos minutos reais.

 

Por exemplo se existirem 2 videos de 30 minutos e também tiver um Vídeo de 31, 32, 33, 34, o segundo vídeo de 30 minutos poderia aparecer como se tivesse 35 minutos.....

 

Código

 

@echo off

:: Antes:  AAAAA-111-AA111111111111_2024-05-21_012129_Ch1_02
:: Depois: AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D0XX
:: XX == minutos como eles aparecem em comprimento do vídeo

:: Informe aqui a pasta onde estão os vídeos:
set Pasta=%userprofile%\desktop\videos

:Inicio
for /f "delims=" %%a in ('echo %Pasta%') do set "Pasta=%%~a"
if not exist "%Pasta%" (
                        set /p "Pasta=Informe a pasta dos videos: "
                        goto :Inicio
                       ) 

pushd "%Pasta%"
for /f "delims=" %%a in ('dir /b *.mp4 *.mkv') do for /f "tokens=1-3 delims=_" %%b in ("%%~a") do (
                                                                                                   set "NO=%%~a"
                                                                                                   set "EXT=%%~xa"
                                                                                                   set "P1=%%~b"
                                                                                                   set "P2=%%~c"
                                                                                                   set "P3=%%~d"
                                                                                                   call :Renomear
                                                                                                  )

exit

:Renomear
for /f "tokens=2 delims=:" %%a in ('powershell "$Path = '%Pasta%';$shell = New-Object -COMOBject Shell.Application;$File = '%NO%';$shellFolder = $shell.Namespace($Path);$shellfile = $shellfolder.ParseName($File);$shellFolder.GetDetailsOF($shellfile, 27);"') do set "Min=%%a"

set P3=T-%P3:~0,2%-%P3:~2,2%-%P3:~4,2%-D0%Min%
IF NOT EXIST "%P1%-%P2%-%P3%%EXT%" (
                                    ren "%NO%" "%P1%-%P2%-%P3%%EXT%"
                                    goto :EOF
                                   )
set Contador=0
:Contador
set /a Contador+=1
IF NOT EXIST "%P1%-%P2%-%P3% (%Contador%)%EXT%" (ren "%NO%" "%P1%-%P2%-%P3% (%Contador%)%EXT%") else (goto :Contador)
goto :EOF

 

Link para o comentário
Compartilhar em outros sites

@Pedro Franklin Isso é a data  e hora de criação do vídeo: 2024-05-16-T-19-26-54 ? Caso sim acho difícil ter 2 vídeos terem sido criados no mesmo segundo....

 

E se fosse algo assim:

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D025_00

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D025_01

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D025_02

Link para o comentário
Compartilhar em outros sites

@ricardo_br Sim, é data e hora de criação. Eles foram criados no mesmo momento, porém em câmeras diferentes. 

 

Em uma câmera ele sai com o CH1 e na outra com o CH2. Se forem 3 canais, tem o ch3 e assim por diante. 

 

AAAAA-111-AA111111111111_2024-05-21_012129_Ch1_02

 

AAAAA-111-AA111111111111_2024-05-21_012129_Ch2_02

 

AAAAA-111-AA111111111111_2024-05-21_012129_Ch3_02

 

E eu não posso adicionar nada após O DXXX, pois é um padrão que tem que ser enviado para o cliente. 

Link para o comentário
Compartilhar em outros sites

Entendi e assim: XX = minutos

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-DXX1

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-DXX2

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-DXX3

AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-DXX4

....

Ai o único problema é se tiver mais de 9 vídeos com os mesmos minutos rs;;;

Link para o comentário
Compartilhar em outros sites

  • Solução

Usando o exemplo dos vídeos que eu tinha usado antes o resultado ficaria assim: Renomear-DXXX.gif

 

Código

 

@echo off

:: Antes:  AAAAA-111-AA111111111111_2024-05-21_012129_Ch1_02
:: Depois: AAAAA-111-AA111111111111-2024-05-21-T-01-21-29-D0XX
:: XX == minutos como eles aparecem em comprimento do vídeo

:: Informe aqui a pasta onde estão os vídeos:
set Pasta=%userprofile%\desktop\videos

:Inicio
for /f "delims=" %%a in ('echo %Pasta%') do set "Pasta=%%~a"
if not exist "%Pasta%" (
                        set /p "Pasta=Informe a pasta dos videos: "
                        goto :Inicio
                       ) 

pushd "%Pasta%"
for /f "delims=" %%a in ('dir /b *.mp4 *.mkv') do for /f "tokens=1-3 delims=_" %%b in ("%%~a") do (
                                                                                                   set "NO=%%~a"
                                                                                                   set "EXT=%%~xa"
                                                                                                   set "P1=%%~b"
                                                                                                   set "P2=%%~c"
                                                                                                   set "P3=%%~d"
                                                                                                   call :Renomear
                                                                                                  )

exit

:Renomear
for /f "tokens=2 delims=:" %%a in ('powershell "$Path = '%Pasta%';$shell = New-Object -COMOBject Shell.Application;$File = '%NO%';$shellFolder = $shell.Namespace($Path);$shellfile = $shellfolder.ParseName($File);$shellFolder.GetDetailsOF($shellfile, 27);"') do set "Min=%%a"

set P3=T-%P3:~0,2%-%P3:~2,2%-%P3:~4,2%-D0%Min%
IF NOT EXIST "%P1%-%P2%-%P3%0%EXT%" (
                                    ren "%NO%" "%P1%-%P2%-%P3%0%EXT%"
                                    goto :EOF
                                   )
set Contador=0
:Contador
set /a Contador+=1
IF NOT EXIST "%P1%-%P2%-%P3%%Contador%%EXT%" (ren "%NO%" "%P1%-%P2%-%P3%%Contador%%EXT%") else (goto :Contador)
goto :EOF

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!