Quiero reemplazar todos los caracteres de subrayado ( _
) con un espacio ( ) en un nombre de archivo.
¿Cómo puedo hacer esto rápidamente, cuando tengo muchos _
personajes para reemplazar?
Quiero reemplazar todos los caracteres de subrayado ( _
) con un espacio ( ) en un nombre de archivo.
¿Cómo puedo hacer esto rápidamente, cuando tengo muchos _
personajes para reemplazar?
Respuestas:
vbScript debería hacerlo por usted. Cree un archivo llamado "rename_underscores.vbs" que contenga lo siguiente.
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
Asegúrese de que el nombre de la carpeta sea correcto. (En el ejemplo, he usado c: \ test) Y luego haz doble clic en tu archivo para cambiar el nombre.
Recomiendo usar una herramienta de terceros como Bulk Rename Utility . Es gratis y tiene un instalador de menos de 1 MB.
Esto está dentro de los reinos de un archivo dos bat. Cree un archivo bat (Nuevo-> Archivo de texto, cambie el nombre de la extensión a .bat) y luego copie las secciones azules a continuación.
Lo dividiré en secciones y explicaré lo que está haciendo.
Imprima el estado actual del directorio para comparar más tarde
dir /b
Enumere los archivos en el directorio, luego, para todos los que contienen un guión bajo y terminan en .txt, llame a ProcessFile en ellos.
for %%f in (*_*.txt) do call :ProcessFile %%f
goto :finished
La sintaxis "str =% str: x = y%" reemplaza las instancias de x con y. En este caso, estamos reemplazando "_" con nada
:ProcessFile
set str=%1
rename %1 %str:_=%
goto :eof
¡Eso es!
Ahora solo imprime lo que se cambió para que podamos confirmar que funciona como se esperaba;
:finished
echo ----
dir /b
Resultados (no forma parte del archivo bat)
baz_ing.txt
big_rawr.foo
foo_bar.txt
multiple_underscores_test.txt
----
bazing.txt
big_rawr.foo
foobar.txt
multipleunderscorestest.txt
Como otros han mencionado, no hay forma de hacer exactamente lo que quiere sin usar un script o un archivo por lotes. Por ejemplo, en PowerShell puedes hacer lo que quieras con bastante facilidad:
cd "C:\Users\MyName\Documents\MyDirectory"
Dir | Rename-Item –NewName { $_.name –replace "_"," " }
Solo asegúrese de reemplazar "C: \ Users \ MyName \ Documents \ MyDirectory" con la ruta a su directorio.
Para obtener más detalles y otras opciones, incluidas algunas cosas que puede hacer con solo Explorer, consulte aquí: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways- cambiar el nombre de varios archivos /
Aquí está mi script de ruby para renombrar lotes . No he usado otras herramientas de cambio de nombre por lotes, pero creo que mi script es muy fácil de usar y muy versátil. Aquí está el comando para su caso:
ruby bren.rb *_* "_/ "
He configurado mi entorno de Windows de tal manera que bren.rb se puede ejecutar como ejecutable desde cualquier directorio.
Herramienta de cambio de nombre basada en Windows, la más poderosa que existe, y es gratis. http://www3.telus.net/pfrank/
Esto no responde explícitamente a la pregunta ('... en Explorer'), pero encontré que el software más útil para hacer esto fue Adobe Bridge (Gratis)
Bonificación adicional: ¡Admite Regex!