varios renombrar prefijo parte para nombres nombre masivamente masiva forma espacios eliminar comando cambiar archivos agregar windows powershell filenames pipeline prefix

renombrar - Cambie el nombre de varios archivos en una carpeta, agregue un prefijo(WIndows)



renombrar archivos masivamente cmd (6)

Me gustaría cambiar el nombre de los archivos en una carpeta, prefijando el nombre de la carpeta en los nuevos nombres. es decir, los archivos en C: / tareas domésticas / serán todos renombrados como "tareas domésticas - $ nombre_antiguo".


El problema con las dos respuestas de Powershell aquí es que el prefijo puede terminar siendo duplicado ya que el script posiblemente se ejecutará sobre el archivo tanto antes como después de que haya sido renombrado, dependiendo del directorio al que se recurra mientras se ejecuta el proceso de cambio de nombre. Para evitar esto, simplemente use la opción -Exclude :

Get-ChildItem -Exclude house chores-* | rename-item -NewName { "house chores-" + $_.Name }

Esto evitará que el proceso cambie el nombre de un archivo más de una vez.


El software libre '' Bulk Rename Utility '' también funciona bien (y es potente para tareas avanzadas también). Download y la instalación demoran un minuto.

Vea screenshots y tutorial en el sitio web original.

-

No puedo proporcionar capturas de pantalla paso a paso ya que las imágenes tendrán que ser publicadas bajo Creative Commons License , y no soy dueño de las capturas de pantalla del software.

Descargo de responsabilidad: no estoy asociado con dicho software / compañía de ninguna manera. Me gustó el producto para mi propia tarea, cumple con OP y requisitos similares, por lo que lo recomiendo.


Esto funcionó para mí, primer CD en el directorio en el que te gustaría cambiar los nombres de archivo y luego ejecuta el siguiente comando:

Get-ChildItem | rename-item -NewName { "house chores-" + $_.Name }


Sé que es una vieja pregunta, pero aprendí muchas de las diversas respuestas, pero surgió mi propia solución como función. Esto debería agregar dinámicamente la carpeta principal como un prefijo a todos los archivos que coinciden con un patrón determinado, pero solo si ya no tiene ese prefijo.

function Add-DirectoryPrefix($pattern) { # To debug, replace the Rename-Item with Select-Object Get-ChildItem -Path ./* -Filter $pattern -Recurse | Where-Object {$_.Name -notlike ($_.Directory.Name + ''*'')} | Rename-Item -NewName {$_.Directory.Name + ''-'' + $_.Name} # Select-Object -Property Directory,Name,@{Name = ''NewName''; Expression= {$_.Directory.Name + ''-'' + $_.Name}} }

https://gist.github.com/kmpm/4f94e46e569ae0a4e688581231fa9e00


Según @ ofer.sheffer answer, este comando cambiará el nombre y anexará la fecha actual al nombre del archivo. es decir, "archivo.txt" se convierte en "20180329 - archivo.txt" para todos los archivos en la carpeta actual

for %a in (*.*) do ren "%a" "%date:~-4,4%%date:~-7,2%%date:~-10,2% - %a"


Opción 1: usar Windows PowerShell

Abra el menú de Windows. Escriba: "PowerShell" y abra la ventana de comandos de "Windows PowerShell".

Ir a la carpeta con los archivos deseados: por ejemplo, cd "C: / tareas domésticas" Aviso: la dirección debe incorporar comillas "" si hay espacios involucrados.

Puede usar ''dir'' para ver todos los archivos en la carpeta. Usando ''|'' canalizará la salida de ''dir'' para el siguiente comando.

Notas: ''dir'' es un alias de ''Get-ChildItem''. Ver: wiki: cmdlets . Uno puede proporcionar una mayor funcionalidad. por ejemplo, ''dir-recursivo'' genera todos los archivos, carpetas y subcarpetas.

¿Qué pasa si solo quiero una variedad de archivos?

En lugar de ''dir |'' Puedo usar:

dir | where-object -filterscript {($_.Name -ge ''DSC_20'') -and ($_.Name -le ''DSC_31'')} |

Para el cambio de nombre de lote con el nombre del directorio como prefijo:

dir | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

Opción 2: usar el símbolo del sistema

En la carpeta, presione shift + clic derecho: seleccione ''abrir ventana de comandos aquí''

for %a in (*.*) do ren "%a" "prefix - %a"

Si hay muchos archivos, podría ser bueno agregar un comando ''@echo off'' antes de esto y un comando ''echo on'' al final.