Eu preciso de uma maneira de renomear todos os arquivos em pastas e subpastas para minúsculas.
Eu gostaria de saber se existe uma maneira de fazer isso usando apenas janelas (XP ou 7)
Eu preciso de uma maneira de renomear todos os arquivos em pastas e subpastas para minúsculas.
Eu gostaria de saber se existe uma maneira de fazer isso usando apenas janelas (XP ou 7)
Respostas:
Vá para o diretório e execute o seguinte comando:
Aqui está o detalhamento no caso de alguém querer modificar / melhorar:
for /f
- Para cada linha"Tokens=*"
- Processar cada item em todas as linhas.%f in (...)
-%f
é o nome da variável para cada item.dir
- lista todos os arquivos e subdiretórios em um diretório./l
- (parâmetro para dir) Usa minúsculas./b
- (parâmetro para dir) Usa o formato nu, apenas os nomes de arquivos / diretórios, sem tamanho, sem cabeçalhos./a-d
- (parâmetro para dir) Você não listar diretórios . (a
significaattribute
,-
significanot
ed
significadirectory
) .rename "%f" "%f"
- renomeie o arquivo com seu próprio nome, que na verdade é minúsculo pelodir
comando e/l
combinação.fonte
for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (rename "%f" "%f")
(adicionado / r ao dir).spacetornado Renamer é um programa do Windows que renomeia grandes quantidades de arquivos em lotes. Você pode pesquisar e substituir texto, remover um certo número de caracteres, alterar o caso para maiúscula, letra maiúscula ou maiúscula e adicionar texto ao início ou fim (acrescentar / preceder) de cada nome de arquivo
fonte
Desde o Windows 7, você poderia usar o PowerShell para essas tarefas
- Escolha sua pasta raiz
- todos os arquivos dentro da pasta raiz e subpastas são renomeados
- os nomes das pastas são excluídos com
Where {-Not $_.PSIsContainer} |
fonte
Aqui está uma solução de linha de comando recursiva adequada usando apenas comandos nativos do cmd.exe que realmente funcionam. Eu acredito que é a solução nativa mais simples possível:
Se você estiver disposto a ir além dos comandos nativos do cmd.exe, outra opção é o meu utilitário de renomeação de expressão regular JREN.BAT que suporta opções para converter nomes em letras maiúsculas ou minúsculas. É puro script (híbrido JScript / batch) que é executado nativamente em qualquer máquina Windows do XP em diante - sem necessidade de arquivos exe de terceiros. Documentação completa é construída - acessada a partir da linha de comando
jren /?
, oujren /??
se você deseja saída paginada.Com o JREN, a solução recursiva é tão simples quanto:
fonte
/a-d
interruptor e também irá diminuir os nomes das pastas também." D"') was unexpected at this time.
Executá-lo como um comando direto funciona bem, simplesmente não funciona quando executado como um arquivo em lotes. Não tenho certeza de como fazer isso funcionar como um arquivo de lote, mas pensei em dar atenção ao problema.%D
deve mudar para%%D
, e%F
para%%F
se você colocar o comando dentro de um script em lotes.Meu utilitário favorito de renomeação de arquivos em lote é o WildRename da Cylog . Entre muitos outros recursos, ele pode alterar o caso de nomes de arquivos. A melhor coisa sobre o WildRename é provavelmente que ele suporta expressões regulares!
fonte
Versão "recursiva" da resposta aceita (que funciona *)
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))
O primeiro loop
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')
Obtém uma lista dos caminhos absolutos de todos os diretórios dentro do atual (inclusive):
C: \ Foo>
C: \ Foo \ TO.txt
C: \ Foo \ Bar \ LOWER.txt
C: \ Foo \ Bar \ Baz \ CASE.txt
O segundo loop
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
Obtém uma lista de todos os nomes de arquivos (ou nomes de arquivos e diretórios, se você remover o
/a-d
comutador) dentro de cada um dos caminhos absolutos encontrados pelo primeiro loop e converte o nome desses arquivos em minúsculas.C: \ Foo \ TO.txt
C: \ Foo \ Bar \ LOWER.txt
C: \ Foo \ Bar \ Baz \ CASE.txt
* ele precisa de dois loops porque o segundo argumento
rename
deve ser um nome de arquivo e não um caminho absoluto (como aquele obtido pelo/s
comutador).fonte
cmd /c "echo %cd%&
no primeirofor
? É completamente desnecessário.echo %cd%
está lá para adicionar a pasta atual à lista de caminhos absolutos ; ecmd /c
faz o&
trabalho para combinar comandos. Eu sou um noob total sobre o Windows Batch Scripting ; Se você souber de uma maneira melhor, fique à vontade para melhorar a resposta!Você poderia usar uma estratégia de "substituição de personagem" ...
... e assim por diante, para as letras AZ. Você provavelmente poderia implementá-lo na forma de um loop FOR.
fonte
http://www.dostips.com/DtCodeCmdLib.php#Function.toLower fornece uma função simples que você deve poder incluir e chamar de um arquivo de lote.
Portanto, faça com que o arquivo em lote faça a iteração das pastas / nomes de arquivos e chame essa função para gerar a versão em letras minúsculas do nome.
fonte
De http://windowsitpro.com/articles/index.cfm?articleid=81612 :
Usando apenas comandos padrão, eu tenho scripts LwrCase.bat e LwrCase_Folder.bat, para renomear um nome de arquivo para minúsculas ou renomear todos os nomes de arquivo em uma pasta para minúsculas.
Para renomear um nome de arquivo para minúscula, use:
Onde FullyQualifiedFileName é o nome completo do arquivo a ser renomeado.
Para renomear todos os nomes de arquivos em um diretório, use:
onde FullyQualifiedDirectoryName é o caminho da pasta totalmente qualificada e / S é um parâmetro opcional que também renomeia nomes de arquivos em todas as subpastas.
Observação: LwrCase.bat usa a opção / L do comando DIR, que retorna nomes de minúsculas.
LwrCase.bat contém:
LwrCase_Folder.bat contém:
fonte
O melhor programa para fazer isso no Windows é o Bulk Rename Utility . É uma ferramenta do homem. Você pode até usar o regex para renomear arquivos e / ou pastas. Ele também tem integração shell (assim você pode executar a partir do explorador com um clique direito), o que é muito bom. Versões de 64 bits e 32 bits disponíveis.
fonte
A resposta aceita para essa questão, por loftysnake , funciona para o diretório atual, mas não pesquisa subpastas. Sawny sugeriu uma modificação simples na resposta de loftysnake para torná-la recursiva, mas não funciona, porque, enquanto o
rename
comando permite que você especifique uma unidade e um caminho com filename1 (a origem), filename2 (o destino) deve ser apenas um nome de arquivo . Para citar a/?
mensagem help ( ),Mas
move
funciona onderename
não, para que você possa recursivamente renomear arquivos para minúsculas com este comando:porque acontece que
Move
pode lidar com caminhos de diretório.O comando acima funciona quando digitado diretamente no Prompt de Comando (
CMD.EXE
). Se você quiser fazer isso de dentro de um.BAT
arquivo batch ( ), você deve dobrar os%
caracteres:E você provavelmente pode deixar os parênteses
/y
e dizer apenasdo move …
.fonte
move
trabalhou onderename
não, e eu acho que sou o único que sugeriu o uso domove
comando aqui. Eu simplesmente peguei as sugestões de @loftysnake e @sawny, e esperançosamente as melhorei um pouquinho.move
, mas não consigo encontrá-lo agora.Solução recursiva. Coloque isso em um arquivo recursiverename.cmd ..
fonte
Powershell
Navegue até o diretório e execute:
Eu verifiquei que isso funciona. Encontrado aqui: http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx
fonte