Como localizo e substituo um caractere nos nomes de arquivos no Windows 7 usando o Explorer?


16

Quero substituir todos os caracteres sublinhados ( _) por um espaço ( ) em um nome de arquivo.

Como posso fazer isso rapidamente, quando tenho muitos _caracteres para substituir?


4
Como as respostas estão indicando, não há / não há como fazer isso no Explorer. Você precisa de um script ou renomeador de arquivos em lote.
Shinrai 8/10/10

Respostas:


20

O vbScript deve fazer isso por você. Crie um arquivo chamado "rename_underscores.vbs" contendo o seguinte.

Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder("c:\test\")

For Each File In Folder.Files
    sNewFile = File.Name
    sNewFile = Replace(sNewFile,"_"," ")
    if (sNewFile<>File.Name) then 
        File.Move(File.ParentFolder+"\"+sNewFile)
    end if

Next

Verifique se o nome da pasta está correto. (No exemplo, eu usei c: \ test) E clique duas vezes no seu arquivo para fazer a renomeação.


Observe que o mesmo funciona com pastas, usando 'Folder.SubFolders' em vez de 'Folder.Files'.
Max Hohenegger

funcionando perfeitamente, só precisa cuidar do caminho. 1 graças
Raj


3

Isso está dentro dos reinos de um arquivo dos bat. Crie um arquivo bat (Novo-> arquivo de texto, renomeie a extensão para .bat) e copie as seções azuis abaixo nele.

Vou dividi-lo em seções e explicar o que está fazendo.


Imprima o estado atual do diretório para comparação posterior

dir /b

Liste os arquivos no diretório e, em seguida, para todos os que contêm um sublinhado e terminam em .txt, chame ProcessFile neles.

for %%f in (*_*.txt) do call :ProcessFile %%f
goto :finished

A sintaxe "str =% str: x = y%" substitui as instâncias de x por y. Nesse caso, estamos substituindo "_" por nada

:ProcessFile
set str=%1
rename %1 %str:_=%
goto :eof

É isso aí!

Agora, apenas imprime o que foi alterado para que possamos confirmar que está funcionando como esperado;

:finished
echo ----
dir /b

Resultados (Não faz parte do arquivo bat)

baz_ing.txt
big_rawr.foo
foo_bar.txt
multiple_underscores_test.txt
----
bazing.txt
big_rawr.foo
foobar.txt
multipleunderscorestest.txt

2

Como outros já mencionaram, não há como fazer exatamente o que você deseja sem usar um script ou arquivo em lotes. Por exemplo, no PowerShell, você pode fazer o que deseja facilmente:

cd "C:\Users\MyName\Documents\MyDirectory"
Dir | Rename-Item –NewName { $_.name –replace "_"," " }

Apenas certifique-se de substituir "C: \ Users \ MyName \ Documents \ MyDirectory" pelo caminho do seu diretório.

Para obter mais detalhes e outras opções, incluindo algumas coisas que você pode fazer usando apenas o Explorer, consulte aqui: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways- renomear vários arquivos /


2

Aqui está o meu lote renomear script ruby . Não usei outras ferramentas de renomeação de lotes, mas acho que meu script é muito fácil de usar e muito versátil. Aqui está o comando para o seu caso:

ruby bren.rb *_* "_/ "

Eu configurei meu ambiente Windows de forma que o bren.rb possa ser executado como um executável em qualquer diretório.



1

Isso não responde explicitamente à pergunta ('.. in Explorer'), mas eu achei o software mais útil para fazer isso foi o Adobe Bridge (gratuito)

  1. Selecione todos os arquivos no Bridge
  2. Clique com o botão direito do mouse> Renomear em lote

Bônus adicionado: Suporta Regex!

Captura de tela

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.