Ir ao conteúdo

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


Ir à solução Resolvido por ricardo_br,

Posts recomendados

Postado

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

Postado

@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?

Postado

 

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

 

Postado

@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

Postado

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

 

Postado

@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

Postado

@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. 

Postado

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;;;

  • Solução
Postado

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

 

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...