Usuário com melhor resposta
Criar uma Bat ou script para renomear arquivos aumentando caracteres

Pergunta
-
Pessoal boa noite ..
Estou tentando fazer uma bat via DOS mas estou tomando uma surra ...
necessito renomear sempre milhares de imagens cuja as extensões são diferenciadas . TIPO *.JPG *.TPG *.PPG
Nesta pasta tem estas 3 extensões mas preciso renomear todas elas para JPG , mas se eu fizer o comando " ren *.* *.jpg o DOS irá renomear todos os e eu não terei como separar uma imagem da outro no nosso programa da empresa.
eu preciso renomear as extensões *.ppg para *.jpg faço o meu trabalho e depois volta para o mesmo formato de origem
ex.
preciso renomear todos *.ppg *.jpg incluindo o nome _pan1.jpg
6def56402.ppg -->> 6def56402P_pan1.jpg
6def56402P.ppg -->> 6def78b92P_pan1.jpg
6def78b92.ppg -->> 6def78b92_pan1.jpg
6def78b92P.ppg -->> 6defca061_pan1.jpg
6defca061.ppg -->> 6defca061P._pan1.jpg
6defca061P.ppg -->> 6defdcc62_pan1.jpg
6defdcc62.ppg -->> 6defdcc62P_pan1.jpg
6defdcc62P.ppg -->> 6df2af771P_pan1.jpg
6df2af771.ppg -->> 6df2af771_pan1.jpg
6df2af771P.ppg -->> 6df2c54c2P_pan1.jpg
6df2c54c2.ppg -->> 6df2c54c2_pan1.jpg
6df2c54c2P.ppg -->> 6df2fdad1P_pan1.jpg
6df2fdad1.ppg -->> 6df2fdad1_pan1.jpg
depois vou precisar de uma bat para voltar para o que era antes
6def56402P_pan1.jpg-->> 6def56402.ppg
6def78b92P_pan1.jpg-->> 6def56402P.ppg -
6def78b92_pan1.jpg-->> ' 6def78b92.ppg
6defca061._pan1.jpg-->> 6def78b92P.ppg
6defca061P._pan1.jpg -->> 6defca061.ppg
6defdcc62._pan1.jpg-->> 6defca061P.ppg
6defdcc62P._pan1.jpg-->> 6defdcc62.ppg
6df2af771P_pan1.jpg-->> 6defdcc62P.ppg
6df2af771_pan1.jpg-->> 6df2af771.ppg
6df2c54c2P_pan1.jpg-->> 6df2af771P.ppg
6df2c54c2_pan1.jpg-->> 6df2c54c2.ppg
6df2fdad1P_pan1.jpg-->> 6df2c54c2P.ppg
6df2fdad1_pan1.jpg-->> 6df2fdad1.ppg
parece simples mas não estou conseguindo fazer uma bat que depois consiga retirar o que foi incluso ou seja _pan1 Não sei se eu fui claro na explicação , mas se alguém puder me ajudar agradeceria muito mesmo..
Abração José Antônio
Respostas
-
José Antonio,
O dir do inicio do script lista todos os arquivos da pasta, então o jeito é mexer no dir ou criar um IF para não pegar outros tipos de arquivo, eu prefiro mexer no DIR, assim:
foreach($A in (dir "C:\TESTE" | ?{$_.Extension -eq ".ppg" -or $_.Extension -eq ".qpg"})){ Rename-Item -Path $A.FullName -NewName ($A.BaseName + "_pan.jpg") }
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 9 de dezembro de 2014 17:43
- Marcado como Resposta Fábio JrModerator quarta-feira, 10 de dezembro de 2014 20:02
Todas as Respostas
-
Pessoal boa noite ..
Estou tentando fazer uma bat via DOS mas estou tomando uma surra ...
necessito renomear sempre milhares de imagens cuja as extensões são diferenciadas . TIPO *.JPG *.TPG *.PPG
Nesta pasta tem estas 3 extensões mas preciso renomear todas elas para JPG , mas se eu fizer o comando " ren *.* *.jpg o DOS irá renomear todos os e eu não terei como separar uma imagem da outro no nosso programa da empresa.
eu preciso renomear as extensões *.ppg para *.jpg faço o meu trabalho e depois volta para o mesmo formato de origem
ex.
preciso renomear todos *.ppg *.jpg incluindo o nome _pan1.jpg
6def56402.ppg -->> 6def56402P_pan1.jpg
6def56402P.ppg -->> 6def78b92P_pan1.jpg
6def78b92.ppg -->> 6def78b92_pan1.jpg
6def78b92P.ppg -->> 6defca061_pan1.jpg
6defca061.ppg -->> 6defca061P._pan1.jpg
6defca061P.ppg -->> 6defdcc62_pan1.jpg
6defdcc62.ppg -->> 6defdcc62P_pan1.jpg
6defdcc62P.ppg -->> 6df2af771P_pan1.jpg
6df2af771.ppg -->> 6df2af771_pan1.jpg
6df2af771P.ppg -->> 6df2c54c2P_pan1.jpg
6df2c54c2.ppg -->> 6df2c54c2_pan1.jpg
6df2c54c2P.ppg -->> 6df2fdad1P_pan1.jpg
6df2fdad1.ppg -->> 6df2fdad1_pan1.jpg
depois vou precisar de uma bat para voltar para o que era antes
6def56402P_pan1.jpg-->> 6def56402.ppg
6def78b92P_pan1.jpg-->> 6def56402P.ppg -
6def78b92_pan1.jpg-->> ' 6def78b92.ppg
6defca061._pan1.jpg-->> 6def78b92P.ppg
6defca061P._pan1.jpg -->> 6defca061.ppg
6defdcc62._pan1.jpg-->> 6defca061P.ppg
6defdcc62P._pan1.jpg-->> 6defdcc62.ppg
6df2af771P_pan1.jpg-->> 6defdcc62P.ppg
6df2af771_pan1.jpg-->> 6df2af771.ppg
6df2c54c2P_pan1.jpg-->> 6df2af771P.ppg
6df2c54c2_pan1.jpg-->> 6df2c54c2.ppg
6df2fdad1P_pan1.jpg-->> 6df2c54c2P.ppg
6df2fdad1_pan1.jpg-->> 6df2fdad1.ppg
parece simples mas não estou conseguindo fazer uma bat que depois consiga retirar o que foi incluso ou seja _pan1 Não sei se eu fui claro na explicação , mas se alguém puder me ajudar agradeceria muito mesmo..
Abração José Antônio
ficou fora de ordem na hora de postar mas o correto é
6def56402.ppg -->> 6def56402_pan1.ppg
6def56402P.ppg -->> 6def56402P_pan1.jpg
6def78b92.ppg -->> 6def78b92P_pan1.jpg
6def78b92P.ppg -->> 6def78b92_pan1.jpg
6defca061.ppg -->> 6defca061_pan1.jpg
6defca061P.ppg -->> 6defca061P._pan1.jpg
6defdcc62.ppg -->> 6defdcc62_pan1.jpg
6defdcc62P.ppg -->> 6defdcc62P_pan1.jpg
6df2af771.ppg -->> 6df2af771_pan1.jpg
6df2af771P.ppg -->> 6df2af771P_pan1.jpg
6df2c54c2.ppg -->> 6df2c54c2P_pan1.jpg
6df2c54c2P.ppg -->> 6df2c54c2_pan1.jpg
6df2fdad1P.ppg -->> 6df2fdad1P_pan1.jpg
depois vou precisar de uma bat para voltar para o que era antes
6def56402_pan1.ppg -->> 6def56402.ppg
6def56402P_pan1.jpg-->> 6def56402P.ppg
6def78b92P_pan1.jpg-->> - 6def78b92.ppg
6def78b92_pan1.jpg-->> 6def78b92P.ppg
6defca061._pan1.jpg-->> '6defca061.ppg
6defca061P._pan1.jpg -->> 6defca061P.ppg
6defdcc62._pan1.jpg-->> 6defdcc62.ppg
6defdcc62P._pan1.jpg-->> 6defdcc62P.ppg
6df2af771P_pan1.jpg-->> 6df2af771.ppg
6df2af771_pan1.jpg-->> 6df2af771P.ppg
6df2c54c2P_pan1.jpg-->> 6df2c54c2.ppg
6df2c54c2_pan1.jpg-->> 6df2c54c2P.ppg
6df2fdad1P_pan1.jpg-->> 6df2fdad1.ppg
6df2fdad1_pan1.jpg-->> 6df2fdad1.ppg
-
-
Paulo bom dia .
eu fiz o seguinte :
para renomear arquivos para JPG
echo renomear imagens PPG QPG PARA JPG
d:
cd inserir_tarja
ren *.ppg "*.pan1.jpg"
ren *.qpg "*.pan2.jpg"Depois eu quero renomear de voltar as extensões de origem:
echo renomear imagens PPG QPG PARA JPG
d:
cd inserir_tarja
ren "*.pan1.jpg" *.ppg
ren "*.pan2.jpg" "*.qpg"
ren *.qpg "* .qpgsó que não vai da mesma forma de origem .. ele renomea para *.ppg e *.qpg porém ele fica com o nome do arquivo assim:
6df2af771_pan1.jpg-->> correto é: 6df2af771P.ppg 6df2af771_pan1.ppg ( mandendo o nome "_pan1")
6df2c54c2P_pan1.jpg-->>correto é: 6df2c54c2.ppg 6df2c54c2P_pan1.ppg ( mandendo o nome "_pan1")assim para todos os outros arquivos...
Paulo se puder me ajudar amigo ficarei muito grato e iria me ajudar bastante no meu trabalho..
Saudações
José Antônio Duarte
-
Em PowerShell.
#troca nome foreach($A in (dir "C:\TESTE")){ Rename-Item -Path $A.FullName -NewName ($A.BaseName + "_pan.jpg") } #"Destroca" foreach($A in (dir "C:\TESTE")){ Rename-Item -Path $A.FullName -NewName ( ($A.BaseName -replace "_pan","") + ".ppg") }
Fábio de Paula Junior
-
-
Aconselho usar pelo menos a versão 3.0 do Powershell, use o aplicativo PowerShell ISE (já vem com o 3.0), muito bom pra depurar scripts.
O script que te passei são dois blocos, copie pra dentro do ISE e execute. Não se esqueça de alterar o caminho da pasta onde estão os seus arquivos.
Ref.:
Instalando o Windows PowerShell 3.0 ou 4.0
http://www.mcsesolution.com/PowerShell/instalando-o-windows-powershell-30-ou-40.html
Fábio de Paula Junior
-
Fabio legal ..
fiz isso ..
mas deu esse erro que ainda não consegui encontrar como resolver :
PS C:\teste> C:\teste\trocar nome arquivo.ps1
O arquivo C:\teste\trocar nome arquivo.ps1 não pode ser carregado porque a execução de scripts foi desabilitada neste sistema. Consulte "get-help about_signing" para obter mais detalhe
s.
At line:0 char:0 -
Abra um prompt do PowerShell como administrador(importante!!!), execute o seguinte comando.
Set-ExecutionPolicy Unrestricted
Eu usei Unrestricted que já vai bastar pra você, mas vale a pena você procurar ler sobre o set-executionpolicy pra saber qual a politica mais adequada pra você.
Se depois que você executou este comando ainda assim não funcionar o seu script, feche o ISE e abra novamente.
Fábio de Paula Junior
-
Fiz e executei este comando no powershell via Administrador :
perguntou se confirmaria Sim ou Não : Confirmei .
agora rodei e deu esse erro :
PS C:\teste> C:\teste\trocar nome arquivo.ps1
'}' de fechamento ausente no bloco de instruções.
Em C:\teste\trocar nome arquivo.ps1:15 caractere:88
+ Rename-Item -Path $A.FullName -NewName ( ($A.BaseName -replace "_pan","") + ".ppg") <<<<
+ CategoryInfo : ParserError: (CloseBraceToken:TokenId) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace -
-
Fabio Rodou legal ..
era realmente a chave no final da linha que estava faltando ..tú é o cara mesmo...
mas teve um detalhe ..
O Script trocou os arquivos jpg e aumentou o nome _pan
o que eu realmente preciso é pegar as extensões .ppg e .qpg e transformar em .jpg com o nome a mais _pan.
Tem jeito ?
Desde já agradeço
- Editado José Antônio Duarte dos Santos terça-feira, 2 de dezembro de 2014 18:01
-
-
José Antonio,
O dir do inicio do script lista todos os arquivos da pasta, então o jeito é mexer no dir ou criar um IF para não pegar outros tipos de arquivo, eu prefiro mexer no DIR, assim:
foreach($A in (dir "C:\TESTE" | ?{$_.Extension -eq ".ppg" -or $_.Extension -eq ".qpg"})){ Rename-Item -Path $A.FullName -NewName ($A.BaseName + "_pan.jpg") }
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 9 de dezembro de 2014 17:43
- Marcado como Resposta Fábio JrModerator quarta-feira, 10 de dezembro de 2014 20:02
-
-
Você não estaria tentando renomear o arquivo para um nome de um arquivo que já existe?
Ao invés de usar o renomear você pode usar o move.
Move-Item -Path $A.FullName -Destination (Join-path $A.DirectoryName -ChildPath ($A.BaseName + "_pan.jpg")) -Force
Fábio de Paula Junior
- Editado Fábio JrModerator quarta-feira, 3 de dezembro de 2014 16:03
-
-
-
-
-
olá fabio é vdd ..
não estava atentando que deveria somente alterar o comando:
ficou assim :
foreach($A in (dir "C:\TESTE" | ?{$_.Extension -eq ".ppg" -or $_.Extension -eq ".qpg"})){ Move-Item -Path $A.FullName -Destination (Join-path $A.DirectoryName -ChildPath ($A.BaseName + "_pan.jpg")) -Force }
rodou legal do jeito que eu estava precisando
No entanto ele apagou as extensões .qpg
Tem como fazer o seguinte :
ppg passar para _pan1
qpg passar para _pan2
Será que tem como ?
desde já agradeço
José Antônio Duarte
- Editado Fábio JrModerator sexta-feira, 5 de dezembro de 2014 14:46 formatacao do codigo
-
-
Fábio boa tarde.
Consegui seguindo sua dica...
ficou assim:
foreach($A in (dir "C:\TESTE" | ?{$_.Extension -eq ".ppg"})){
Move-Item -Path $A.FullName -Destination (Join-path $A.DirectoryName -ChildPath ($A.BaseName + "_pan1.jpg")) -Force}
foreach($A in (dir "C:\TESTE" | ?{$_.Extension -eq ".qpg"})){
Move-Item -Path $A.FullName -Destination (Join-path $A.DirectoryName -ChildPath ($A.BaseName + "_pan2.jpg")) -Force}olha o resultado:
Agora para mim poder fazer o inverso como eu faria ?
desde já agradeço
-
José Antônio,
Veja este trecho.
foreach($A in (dir "C:\TESTE" | ?{$_.Name -like "*_pan1.jpg"})){ $NovoNome = $A.Name -replace "_pan1.jpg",".ppg" Move-Item -Path $A.FullName -Destination (Join-path $A.DirectoryName -ChildPath $NovoNome) -Force }
Fiz um foreach (pra passar por cada um dos arquivos), e filtrei pra pegar apenas os arquivos cujo o nome terminem em "_pan1.jpg".
Dentro do laço primeiro construí o novo nome que é trocar o trecho "_pan1.jpg" por ".ppg".
Por último utilizei o move-item similar ao que tinha feito antes.
Teste, se funcionar faça um outro loop para os arquivos "_pan2.jpg"
Fábio de Paula Junior
- Editado Fábio JrModerator terça-feira, 9 de dezembro de 2014 18:45 erro
-
Fábio vc é o cara ..
Deu certo amigo , funcionou perfeito .. voltou para o que era antes ..
Muito obrigado mesmo vai me ajudar demais no meu dia a dia ..
Desde já agradeço muito sua disposição e atenção .
Fica com DEUS companheiro
Saudações
José Antônio Duarte
-
-
Olá, lendo essa postagem, ela se parece muito com o que eu quero.
estou precisando de renomear o arquivo dessa forma.
"00098756-55465.pdf" para > "00098756.pdf" teria como?
tenho milhares de arquivos dessa maneira para ser renomeado. rsrs