¿Cómo encuentro y reemplazo un carácter en los nombres de archivo en Windows 7 usando el Explorador?


16

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?


44
Como indican las respuestas, hay / hay / no hay manera de hacer esto en Explorer. Necesita un script o un renombrador de archivos por lotes.
Shinrai

Respuestas:


20

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.


Tenga en cuenta que lo mismo funciona con carpetas, usando 'Folder.SubFolders' en lugar de 'Folder.Files'.
Max Hohenegger

funcionando perfectamente, solo necesito cuidar el camino. +1 gracias
Raj

4

Recomiendo usar una herramienta de terceros como Bulk Rename Utility . Es gratis y tiene un instalador de menos de 1 MB.


1
¿Qué sucede si el nombre del archivo es "this_is_a_test.ext"?
seanyboy

1
Bulk Rename Utility es una GRAN aplicación. Es muy versátil y no creo que puedas lograr lo mismo con Explorer.
Alex Angelico

El comando dos sería un poco más complicado que eso. Me burlaré de uno.
RJFalconer el

3

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

2

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 /


2

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.



1

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)

  1. Seleccione todos los archivos en Bridge
  2. Haga clic derecho> Cambiar nombre de lote

Bonificación adicional: ¡Admite Regex!

Captura de pantalla

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.