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?
El siguiente comando haría el trabajo.
forfiles /M *.txt /C "cmd /c rename @file /"@fname 1.1.txt/""
fuente: cambiar el nombre de las extensiones de archivos de forma masiva
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"
Pruebe esta utilidad de cambio de nombre a granel Funciona bien. Tal vez no reinventar la rueda. Si no necesita un script, esta es una buena manera de hacerlo.
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.