Como renomear 80.000 arquivos de uma vez no Windows

8

Eu tenho 80.000 arquivos em uma pasta e preciso renomear todos eles

filename.jpg

para

._filename.jpg

no ambiente Windows, eu acho dos. O motivo é que eu compactuei esses arquivos no tar.gz do unix e copiei no Windows e, por algum motivo, os nomes de arquivos foram alterados.

Você poderia me dizer qual é o comando para fazer isso? obrigado

aneuryzm
fonte

Respostas:

3

Você pode usar o comando embutido renameouren :

ren *.jpg ._*.jpg

Porém, como em todas essas coisas, tente-o em um diretório que contém apenas alguns arquivos primeiro.

ChrisF
fonte
1
Eu gosto da sua abordagem, mas tenho 2 problemas: (1) as primeiras letras dos nomes de arquivos são substituídas. Em outros termos, o "._" não é adicionado no início, mas substitui as 2 primeiras letras. (2) "._" na verdade não funciona. Se eu usar, por exemplo "__", funcionará. Eu acho que o ponto "." dá alguns problemas
aneuryzm
@ Patrick - Devo admitir que não tive chance de testar completamente isso, e sim, acho que você está certo sobre o ponto que está causando problemas.
ChrisF
Isso está incorreto e não é por causa dos pontos. rensó pode substituir texto por texto do mesmo comprimento. Por exemplo, se você possui arquivos file1.txte file2.txt, ren file*.txt blah*.txtfaz o que espera (agora você possui arquivos blah1.txte blah2.txt). No entanto, se você digitar ren blah*.txt myfile*.txto comando bombardeará porque ele renomeia blah1.txtpara myfile.txt(não myfile1.txt) e não pode renomear blah2.txtpara myfile.txtporque esse arquivo já existe.
precisa saber é o seguinte
15

Aqui está uma maneira de usar o PowerShell:

Navegue para sua pasta e execute este comando

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Bônus extra versão curta:

gci *.jpg | ren -newname {"._" + $_.Name}
Siim K
fonte
6

Eu tenho 2 soluções:

  1. Todos os arquivos estão na mesma pasta

    • execute o seguinte no prompt de comando nessa pasta:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. solução completa quando houver arquivos nas subpastas E quando você quiser substituir os "n" primeiros caracteres por uma sequência que você deseja: D

    • crie um arquivo em lotes com o seguinte comando
    • altere os parâmetros variáveis ​​para o que você deseja
      • path: coloque dentro ""do caminho raiz dos seus arquivos (por exemplo, "C: \ documentos e configurações \ usuário \ área de trabalho \ nova pasta"
      • numfirstchars2replace: coloque um número com os primeiros caracteres a serem substituídos (no seu caso, 2)
      • str2put: coloque uma string a ser adicionada como prefixo do novo nome de arquivo (no seu caso ._)
    • execute-o em uma pasta diferente de onde os arquivos estão


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on
kokbira
fonte
totalmente testado :) resolve o seu problema, inclusive com algumas especificações fornecidas no comentário do @ChrisF. Nota: em "delims = ¯", se "¯" é usado em um nome de arquivo, altere "¯" com outro personagem que você sabe que não é usado nos nomes de arquivo
kokbira
votado por causa do seu script incrivelmente longo para fazer um loop e renomear sth. :)
wullxz
bem, justamente, eu poderia criar um loop "for / f" com todos os arquivos classificados por nome e renomeá-los para "._lenameX.jpg" com X como o número do pedido, mas pensei em fazê-lo em outros casos - se, no futuro, uma será exibida de problemas semelhantes, alguém pode modificar alguns comandos ...
kokbira
você pode usar "delims =" em vez de "delims = ¯" (esqueci que: D). Também você pode usar para / f intead de para / f "delims =" porque ele faz o que eu quero nesse caso ...
kokbira
3

Se todos estiverem na mesma pasta, você poderá selecioná-los todos com Control+ Ae pressionar F2para renomear um deles. Todos os arquivos subsequentes serão nomeados arquivo (2), arquivo (3), etc.

bruno077
fonte
3

Experimente o Powershell (pré-instalado no Windows 7):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(testei no meu download-dir.)

Edit : O código de Siim K acrescentará um ".jpg" adicional a cada "._filename.jpg". Remova esse último ".jpg" no código do Siim K e você terá um código curto e elegante para renomear seus arquivos.

wullxz
fonte
obrigado, atualizado. Reutilizou o código de um comando de renomeação semelhante, que exigiu a manipulação da extensão e não percebeu.
Siim K
3

O Total Commander possui uma ferramenta de renomeação muito boa.

György Andrasek
fonte
0

Sempre achei o Flash Renamer uma boa ferramenta para renomear arquivos em lotes.

Possui versões de avaliação e completas (US $ 20) e pode renomear arquivos com base em metadados - muito útil para renomear arquivos MP3, para os quais eu mais os uso.

ajcw
fonte
0

Se você está procurando uma maneira fácil de renomear em massa, pode experimentar a ferramenta gratuita Ant Renamer , há uma enorme lista de ações que você pode executar e também fornece uma visualização útil antes de fazer qualquer renomeação. Eu o uso muito quando mexo com minhas bibliotecas de músicas, fotos ou vídeos.

Chris
fonte