Respuestas:
Sé que en su título dice "in dos", pero tengo la impresión de que solo está buscando una manera de hacer esto y se pregunta si esa es la mejor manera.
La mejor herramienta absoluta que he encontrado para esto es la utilidad Bulk Rename .
No es una herramienta de línea de comando, pero tienen una versión de línea de comando si realmente quieres usarla de esa manera.
He usado mucho la versión GUI, y es muy potente, muy rápida y extremadamente fácil de usar.
Ah, y es GRATIS para uso personal.
Un pequeño script de PowerShell:
$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }
Combinado con expresiones regulares más complejas, esto podría convertirse en algo así como:
ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }
Lo que convierte cosas como '01 - Beginning.mp3 'en' Beginning - 01.mp3 '.
Use el -WhatIf
parámetro Rename-Item
activado para verificar los cambios de nombre antes de emitirlos.
... -replace '\d+ - ',''
. Además, creo que el primero es mejor, simplemente quitando el comienzo usando regex. Aunque creo que deberías incluir el ancla ^ al comienzo de la expresión para que solo coincida con los nombres que comienzan con números.
-replace
puede tener solo un argumento en el lado derecho, en cuyo caso el segundo es implícitamente la cadena vacía.
Si realmente desea utilizar la línea de comandos de Windows (si no desea descargar algo), puede hacerlo así:
dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l
La primera línea genera la lista de archivos en un archivo llamado fileList.txt. La segunda línea separa cada uno de los nombres en la lista en 3 partes, el #, el "-" y el resto del nombre. Para cada uno de ellos, ejecuta el comando renombrar.
for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
AntRenamer hace que sea bastante fácil definir un patrón de cambio de nombre; ya hay muchos preparados (y ofrece una vista previa de las acciones):
Gratis para uso personal y comercial.
vieja escuela:
Puede hacer un DIR y redirigir la salida a un archivo, como en DIR * .TXT> TEMP.BAT
Luego use un editor para sacar lo que no necesita y modificar las partes que sí necesita. Agregue un "@echo off" como línea superior, guárdelo y ejecútelo.
Otra opción: Massive File Renamer
Permite cambiar fácilmente el nombre de múltiples archivos y extensiones de archivo . ¡Es muy rápido y simple!
Para usuarios avanzados y desarrolladores, es posible usar expresiones regulares .
Véalo en acción:
Utilizo la herramienta de cambio de nombre múltiple de Total Commander (ctrl + M) para cosas como esta. Su útil herramienta, una de las demasiadas para contar, es fácil de usar y también puede emplear expresiones y plantillas regulares si es necesario. Ah, y obviamente te da una vista previa antes de hacer cualquier cambio.
Esta es la tercera o cuarta pregunta que he respondido al recomendar Total Commander ... Debería recibir una comisión de ellos ;-)
La herramienta con la que me he quedado satisfecho es ReNamer . También admite el guardado de reglas de cambio de nombre, lo que me ha sido útil, ya que muchas veces hago los mismos cambios de nombre.
A continuación se muestra un ejemplo de cómo eliminar texto antes del primer guión, pero hay muchas otras reglas que puede definir.
He usado Free Commander Portable (freeware) para esto con buenos resultados:
Para usuarios avanzados y desarrolladores, sugeriría RegexRenamer .
Pro:
Contras:
La forma más fácil sería usar Rename Master .
Aquí hay una solución de línea de comandos: un programa Java que escribí específicamente para facilitar el trabajo con "patrones" en los nombres de archivo. Es gratis y de código abierto, así que siéntete libre de modificarlo:
RenameWand
http://renamewand.sourceforge.net/
Algunos ejemplos de uso relevantes:
Coloque todo antes del "-"
en el nombre del archivo:
java -jar RenameWand.jar "<a> - <b>" "<b>"
Anteponga un número de 3 dígitos al nombre del archivo, ordenando por hora de última modificación:
java -jar RenameWand.jar "<a>" "<3|#FT> <a>"
Reorganizar partes del nombre de archivo y cambiar mayúsculas y minúsculas:
java -jar RenameWand.jar "<album> - <artist> - <song>.<ext>"
"<artist.upper> <album.title> - <song>.<ext.lower>"
Descubrí RenPhoric hace aproximadamente un mes. Soberbio. Y es gratis .
No tenía una interfaz complicada y pude cambiar rápidamente el nombre exactamente como quería. Expresión regular capaz. No he usado nada más desde entonces.
Como @zdan arriba, hice esto por línea de comando (usando "cmd.exe" en Windows). Tomó algunos ajustes para mi caso particular, pero un poco de investigación lo resolvió.
Al igual que zdan, envié la lista a un archivo TXT, luego la usé tokens
y delims
cambié el nombre de los archivos en consecuencia. En mi caso, comencé con una lista de archivos con el siguiente nombre:
name-01-02-2012.csv
Quería que la parte de la fecha del archivo estuviera en el orden a / m / d, con la parte del "nombre" al final para que se lea así:
2012-01-02-name.csv
Para hacer esto en masa, utilicé el siguiente código. Tenga en cuenta que al hacerlo de esta manera, se consideran TODAS las partes del nombre de archivo, incluida la extensión de ".csv". Eso me engañó la primera vez.
dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m
El tokens
son las "partes" del nombre de archivo, el delims
son los separadores. Tenga en cuenta que en mi caso, tenía 2 delimitadores (un guión y un punto).
Personalmente no me importa la aplicación "Bulk Rename". Como otros han mencionado, la GUI es atroz y no muy intuitiva. Con un poco de investigación y una codificación simple, estas cosas se pueden hacer mucho más eficiente y rápidamente.
Nombre divertido y herramienta de línea de comando muy potente, muy rápida y extremadamente fácil de usar. "Buscar y reemplazar texto" FART http://fart-it.sourceforge.net/ ¡ FUNCIONA GENIAL! también puede cambiar el nombre de las palabras en archivos txt.
Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]
Options:
-h --help Show this help message (ignores other options)
-q --quiet Suppress output to stdio / stderr
-V --verbose Show more information
-r --recursive Process sub-folders recursively
-c --count Only show filenames, match counts and totals
-i --ignore-case Case insensitive text comparison
-v --invert Print lines NOT containing the find string
-n --line-number Print line number before each line (1-based)
-w --word Match whole word (uses C syntax, like grep)
-f --filename Find (and replace) filename instead of contents
-B --binary Also search (and replace) in binary files (CAUTION)
-C --c-style Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
--cvs Skip cvs dirs; execute "cvs edit" before changing files
-a --adapt Adapt the case of replace_string to found string
-b --backup Make a backup of each changed file
-p --preview Do not change the files but print the changes
-f
opción, como se indica.
El script de cambio de nombre múltiple es una alternativa de código abierto a la herramienta de cambio de nombre total de Total Commanders que puede manejar a través del script. Puede usar complementos TC para obtener información de metadatos.
@echo off setlocal enabledelayedexpansion conjunto X = 5 establecer FOLDER_PATH =. pushd% FOLDER_PATH% para %% f en (*) hacer si %% f neq% ~ nx0 ( establezca "filename = %% ~ nf" establezca "filename =! filename: ~% X%!" ren "%% f" "! filename! %% ~ xf" ) popd
guardar esto en un archivo por lotes y ejecutar
set /p "X=Enter the value for X: "
Yo uso Blackboard para administrar cursos en una universidad. Cuando descargo una tarea en masa (en Blackboard, hago clic en la parte superior de la columna de calificación, luego "descargar archivo de tarea" Blackboard agrega un montón de cosas adicionales al nombre del archivo, a menudo haciendo que el nombre del archivo sea demasiado largo para ser válido en Windows.
Así es como se ven:
Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx
Y esto es lo que quería
studentname.docx
Entonces utilicé el enfoque que aconsejaron @zdan y @ gtr1971, al abrir una ventana de comandos en la carpeta con los archivos dentro (CMD.EXE). Luego ejecute este comando para poner todos los nombres de archivo en un documento.
dir /b >filelist.txt
Edite el documento y elimine los nombres de carpetas, etc.
Use este comando para reemplazar las cosas de nombre de archivo agregadas de Blackboard con solo el nombre de usuario y la extensión de archivo.
for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n
Espero que esto ayude a alguien más también.
Aquí hay otro programa simple llamado File Attribute Changer que puede usar para cambiar el nombre de los archivos. Es un programa portátil, por lo que puede llevarlo en una unidad USB.
He desarrollado una utilidad de línea de comandos híbrida JScript / batch llamada JREN.BAT que puede cambiar el nombre de archivos o carpetas realizando una búsqueda de expresiones regulares y reemplazando los nombres. Es un script puro que se ejecutará de forma nativa en cualquier máquina con Windows desde XP en adelante. La documentación completa está incrustada en el script.
Suponiendo que JREN.BAT está en su directorio actual, o mejor aún, en algún lugar dentro de su ruta, su tarea de cambio de nombre se vuelve trivial.
jren "^\d+[ -]+(.+)\.txt$" "$1" /i
o
jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"
Hay muchas opciones, incluida la /S
opción que realiza recursivamente el cambio de nombre en los subdirectorios.
Si necesita un poder serio y está dispuesto a desembolsar el dinero ... PowerGrep es una de las herramientas más potentes y versátiles del mercado ... puede cambiar el nombre de casi cualquier cosa con PowerGrep ... incluso la búsqueda y el reemplazo binarios ... Es creado por RegEx Guru, Jan Goyvaerts .