Si tengo varios archivos en un directorio y quiero agregar algo a sus nombres de archivo, pero no la extensión, ¿cómo puedo hacer esto?

He intentado lo siguiente, con archivos de prueba file1.txt y file2.txt:

ren *.txt *1.1.txt

Este cambia el nombre de los archivos a file1.1.txt y file2.txt1.1.txt

Quiero que los archivos se file1 1.1.txt y file2 1.1.txt

¿Será posible desde cmd o necesito tener un archivo bat para hacer esto? ¿Qué acerca de PowerShell?

  • hay una gran cantidad de archivos?
  • Hay cerca de 90 en una carpeta
  • También puede hacer esto con sólo la interfaz de usuario si lo desea. Seleccione todos los archivos, cambiar el nombre de una a «archivo» y se mostrará como archivo (1), archivo (2), archivo(3), archivo (4), etc.
  • También puede utilizar una herramienta de Enorme Renombrador de Archivos superuser.com/a/730292/78897
InformationsquelleAutor Morne | 2013-06-24

9 Comentarios

  1. 19
    for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"
    

    Si se utiliza la sencilla for bucle sin la /f parámetro, ya cambiado el nombre de los archivos será llamarse de nuevo.

    • lo ‘~n » en «%%~ni un 1,1%%~xi» significa? yo no entiendo como funciona…
    • Leer el for documentación, explica cómo la variable de marcadores de posición de trabajo.
  2. 20

    Asegúrese de que no hay más ? que hay caracteres en el nombre más largo:

    ren *.txt "???????????????????????????? 1.1.txt"
    

    Ver ¿Cómo funciona el Windows cambiar el nombre de comando interpretar los comodines? para obtener más información.

    Nueva Solución 2014/12/01

    Para aquellos que gustan de las expresiones regulares, hay JREN.BAT – un híbrido de JScript/lote utilidad de línea de comandos que se ejecuta en cualquier versión de Windows desde XP en adelante.

    jren "^.*(?=\.)" "$& 1.1" /fm "*.txt"
    

    o

    jren "^(.*)(\.txt)$" "$1 1.1$2" /i
    
    • +1 ???????????????????????????? ¿sabe usted cuánto tiempo pueden los nombres de archivo de ser ??
    • El máximo absoluto de nombre de archivo longitud es de 255 caracteres. Pero el límite práctico para la mayoría de los casos es menor, ya que la máxima longitud total de la ruta soportados por la interfaz de usuario de Windows es de 259 caracteres. El total de la longitud de la ruta incluye el volumen, carpeta y nombre de archivo de la información, además de un terminador nulo. Consulte msdn.microsoft.com/en-us/library/aa365247.aspx para más información.
    • Gracias por la introducción de jren, era exactamente lo que yo necesitaba, corta y sencilla y rápida. Por cierto, con lo que es posible utilizar el abreviada de las clases de caracteres como \d o \w.
    • Sí – JREN utiliza el estándar de JSCRIPT regex, por lo que la taquigrafía de las clases de caracteres son compatibles. Usted puede leer el Microsoft sintaxis regex documentación .
  3. 13

    Paso 1:

    Seleccione todos los archivos (ctrl + A)

    Paso 2 :

    A continuación, elija la opción cambiar nombre

    Cambiar el nombre de varios archivos en cmd

    Paso 3:

    Elija el nombre de archivo… por ej: miarchivo

    automáticamente cambiar el nombre a miarchivo (01),miarchivo (02),,…..

    Si quieres reemplazar los espacios & soporte.. seguir paso 4

    Paso 4:

    Abrir Windows Powershell desde su carpeta actual

    Cambiar el nombre de varios archivos en cmd

    Paso 5:

    Para reemplazar un espacio vacío carácter de subrayado (_)

     dir | rename-item -NewName {$_.name -replace [Regex]::Escape(" "),"_"}
    

    Paso 6:

    Para reemplazar el corchete de apertura

     dir | rename-item -NewName {$_.name -replace [Regex]::Escape("("),""}
    

    Para reemplazar corchete de cierre

     dir | rename-item -NewName {$_.name -replace [Regex]::Escape(")"),""}
    
  4. 10

    El siguiente comando que hacer el trabajo.

    forfiles /M *.txt /C "cmd /c rename @file \"@fname 1.1.txt\""
    

    fuente: Cambiar el nombre de las extensiones de archivo a granel

    • +1 creo que esta es la más fácil de recordar, mucho más sencilla que la for sintaxis de cmd, pero la decepción es que tiene que generar un nuevo cmd.exe proceso para cada iteración. Que lo hace muy ineficiente y lenta como la melaza.
  5. 3
    @echo off
    for %%f in (*.txt) do (
        ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
    )
    
    • Para alguien que no va a ejecutar : para %f en (*.txt) do (s «%~nf%~xf» «%~nf 1.1%~xf»)
  6. 1

    He intentado pegar Endoro del comando (Gracias Endoro) directamente en el símbolo del sistema para agregar un prefijo a los archivos pero se encontró con un error. La solución fue reducir la %% a %, así:

    for /f "delims=" %i in ('dir /b /a-d *.*') do ren "%~i" "Service.Enviro.%~ni%~xi"
    
  7. 0

    Yo estaba perplejo por esto también… no como los paréntesis que windows pone, cuando cambie de forma masiva. En mi investigación me he decidido a escribir una secuencia de comandos de PowerShell en su lugar. Super fácil y trabajó como un encanto. Ahora lo puedo usar cuando necesito de proceso por lotes de archivos cambiar el nombre… cual es frecuente. Puedo tomar cientos de fotos y la cámara de los nombres de ellos IMG1234.JPG etc…

    Aquí es el guión que escribió:

    # filename: bulk_file_rename.ps1
    # by: subcan
    # PowerShell script to rename multiple files within a folder to a 
    # name that increments without (#)
    # create counter
    $int = 1
    # ask user for what they want
    $regex = Read-Host "Regex for files you are looking for? ex. IMG*.JPG "
    $file_name = Read-Host "What is new file name, without extension? ex. New Image "
    $extension = Read-Host "What extension do you want? ex. .JPG "
    # get a total count of the files that meet regex
    $total = Get-ChildItem -Filter $regex | measure
    # while loop to rename all files with new name
    while ($int -le $total.Count)
    {
        # diplay where in loop you are
        Write-Host "within while loop" $int  
        # create variable for concatinated new name - 
        # $int.ToString(000) ensures 3 digit number 001, 010, etc
        $new_name = $file_name + $int.ToString(000)+$extension
        # get the first occurance and rename
        Get-ChildItem -Filter $regex | select -First 1 | Rename-Item -NewName $new_name
        # display renamed file name
        Write-Host "Renamed to" $new_name
        # increment counter
        $int++
    }

    Espero que este sea útil a alguien por ahí.

    subcan

Dejar respuesta

Please enter your comment!
Please enter your name here