name multiple lot files extensions change batch all windows batch-file cmd wildcard rename

windows - multiple - rename file



Renombra mĂșltiples archivos en cmd (9)

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

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

Consulte ¿Cómo interpreta el comando RENAME de Windows los comodines? para más información.

Nueva solución - 2014/12/01

Para aquellos que gustan de las expresiones regulares, hay JREN.BAT , una utilidad de línea de comandos híbrida JScript / batch que se ejecutará en cualquier versión de Windows a partir de XP.

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

o

jren "^(.*)(/.txt)$" "$1 1.1$2" /i

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

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

ren *.txt *1.1.txt

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

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

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



Esto funciona para su caso específico:

ren file?.txt "file? 1.1.txt"


Esto también me sorprendió ... no me gustaron los paréntesis que coloca Windows cuando cambias el nombre de forma masiva. En mi investigación decidí escribir un script con PowerShell en su lugar. Súper fácil y funcionó a la perfección. Ahora puedo usarlo cuando necesito procesar por lotes el cambio de nombre de archivo ... lo cual es frecuente. Tomo cientos de fotos y la cámara las llama IMG1234.JPG, etc ...

Aquí está el guión que escribí:

# 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 esto sea útil para alguien por ahí.

subcan


Intenté pegar el comando de Endoro (Gracias, Endoro) directamente en el símbolo del sistema para agregar un prefijo a los archivos, pero encontré un error. La solución fue reducir %% a%, por lo que:

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



Paso 1:

Seleccionar todos los archivos (ctrl + A)

Paso 2 :

Luego elige la opción de renombrar

Paso 3:

Elija su nombre de archivo ... por ejemplo: myfile

automáticamente cambia el nombre a myfile (01), myfile (02), .....

Si desea reemplazar espacios y corchetes, continúe con el paso 4

Etapa 4:

Abre Windows Powershell desde tu carpeta actual

Paso 5:

Para reemplazar el espacio vacío para subrayar (_)

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

Paso 6:

Para reemplazar el soporte abierto

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

Para reemplazar el soporte de cierre

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


@echo off for %%f in (*.txt) do ( ren "%%~nf%%~xf" "%%~nf 1.1%%~xf" )


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

Si usa el bucle for simple sin el parámetro /f , los nombres de los archivos cuyo nombre ya se ha cambiado serán renombrados.