Me gustaría cambiar el nombre de un gran número de archivos dentro de una carpeta en un WinXP sistema, de preferencia mediante un archivo por lotes.

Los archivos que están actualmente denominada como este:

Vacation2010 001.jpg

Vacation2010 002.jpg

Vacation2010 003.jpg

Y me gustaría cambiar a:

De diciembre de 001.jpg

De diciembre de 002.jpg

De diciembre de 003.jpg

¿Cómo puedo realizar esta operación??

  • Te puede gustar XYplorer, la cual he usado para un par de años, justo hasta que dejé de usar Windows en casa. Tiene un lote de cambiar el nombre de la interfaz para manejar esta situación sin necesidad de programación, y es bien vale la pena el costo, en todas partes.
  • También Bulk Rename Utility (bulkrenameutility.co.reino unido) es una herramienta muy buena y es gratis.
InformationsquelleAutor user459962 | 2010-09-27

5 Comentarios

  1. 26
    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET old=Vacation2010
    SET new=December
    for /f "tokens=*" %%f in ('dir /b *.jpg') do (
      SET newname=%%f
      SET newname=!newname:%old%=%new%!
      move "%%f" "!newname!"
    )
    

    Lo que esto hace es que se repite a lo largo de todos .los archivos jpg en la carpeta donde el archivo por lotes se encuentra y reemplaza a la Vacation2010 con el de diciembre de en el interior de los nombres de archivo.

    • Para cambiar el nombre de sólo los archivos seleccionados, podemos especificar nombres de archivo como AB.jpg, ABC.jpg, ABCD.jpg como que?
  2. 11
    dir /b *.jpg >file.bat
    

    Esto le dará líneas tales como:

    Vacation2010 001.jpg

    Vacation2010 002.jpg

    Vacation2010 003.jpg

    Editar el archivo.bate en su Windows favoritas editor de texto, haciendo el equivalente de:

    s/Vacation2010(.+)/rename "&" "December "/
    

    Que un regex; muchos editores apoyo de ellos, pero ninguno que vienen por defecto con Windows (que yo sepa). También se puede obtener una herramienta de línea de comandos como la sed o perl que puede tomar la sintaxis exacta tengo encima, después de escapar de la línea de comando.

    Las líneas resultantes aspecto:

    cambiar el nombre de «Vacation2010 001.jpg» «diciembre 001.jpg»

    cambiar el nombre de «Vacation2010 002.jpg» «diciembre 002.jpg»

    cambiar el nombre de «Vacation2010 003.jpg» «diciembre 003.jpg»

    Usted puede reconocer estas líneas como cambiar el nombre de los comandos, uno por cada archivo de la cotización original. 😉 Ejecutar ese archivo por lotes en cmd.exe.

    • Que /b bandera a dir, es increíblemente útil, ¿no?
    • No es tan útil como ls bajo cygwin! 🙂 dir /s también es apreciado.
    • Es orrible que un sistema operativo tiene un truco para simplemente cambiar el nombre de un conjunto de archivos, ¿no?
  3. 6

    usted puede hacer esto fácilmente, sin necesidad de editar manualmente o utilizando la fantasía de los editores de texto. He aquí un vbscript.

    Set objFS = CreateObject("Scripting.FileSystemObject")
    strFolder="c:\test"
    Set objFolder = objFS.GetFolder(strFolder)
    For Each strFile In objFolder.Files
        If objFS.GetExtensionName(strFile) = "jpg" Then    
            strFileName = strFile.Name
            If InStr(strFileName,"Vacation2010") > 0 Then           
                strNewFileName = Replace(strFileName,"Vacation2010","December")
                strFile.Name = strNewFileName
            End If 
        End If  
    Next 
    

    guardar como myscript.vbs y

    C:\test> cscript //nologo myscript.vbs 
    
  4. 1
    @ECHO off & SETLOCAL EnableDelayedExpansion
    
    SET "_dir=" REM Must finish with '\'
    SET "_ext=jpg"
    SET "_toEdit=Vacation2010"
    SET "_with=December"
    FOR %%f IN ("%_dir%*.%_ext%") DO (
        CALL :modifyString "%_toEdit%" "%_with%" "%%~Nf" fileName 
        RENAME "%%f" "!fileName!%%~Xf"
    )
    GOTO end
    
    :modifyString what with in toReturn
        SET "__in=%~3"
        SET "__in=!__in:%~1=%~2!"
        IF NOT "%~4" == "" (
            SET %~4=%__in%
        ) ELSE (
            ECHO %__in%
        )
        EXIT /B
    
    :end
    

    Esta secuencia de comandos le permite cambiar el nombre de todos los archivos que contienen Vacation2010 con el mismo nombre, pero con December en lugar de Vacation2010.

    Si usted copie y pegue el código, usted tiene que guardar el .bat en la misma carpeta de las fotos.
    Si desea guardar el script en otro directorio [E. G. usted tiene una carpeta de favoritos para las utilidades] tienes que cambiar el valor de _dir con la ruta de las fotos.

    Si usted tiene que hacer el mismo trabajo en otras fotos [u otros archivos changig _ext] tienes que cambiar el valor de _toEdit con la cadena que desea cambiar [o borrar] y el valor de _with con la cadena que desea poner en lugar de _toEdit [SET "_with=" si usted simplemente desea borrar la cadena especificada en _toEdit].

  5. 0

    Usted no necesita un archivo de proceso por lotes, sólo hacerlo desde powershell :

    powershell -C "gci | % {rni $_.Name ($_.Name -replace 'Vacation2010', 'December')}"
    

Dejar respuesta

Please enter your comment!
Please enter your name here