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?
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?
Respostas:
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.
Eu recomendo usar uma ferramenta de terceiros como o Bulk Rename Utility . É gratuito e possui um instalador com menos de 1 MB.
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
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 /
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.
Ferramenta de renomeação baseada em Windows, a mais poderosa que existe e é gratuita. http://www3.telus.net/pfrank/
Isso não responde explicitamente à pergunta ('.. in Explorer'), mas eu achei o software mais útil para fazer isso foi o Adobe Bridge (gratuito)
Bônus adicionado: Suporta Regex!