varios renombrar parte para nombre masivamente comando carpetas cambiar archivos windows cmd

renombrar - Comando FOR de Windows scripting para cambiar el nombre de todos los archivos en un directorio



renombrar archivos sin cambiar nombre (4)

¡Lo tengo!

for %1 in (.) do ren %1 t%1

y entonces:

ren tenc*.* test*.*

Estoy intentando cambiar el nombre de todos los archivos presentes en un directorio de Windows usando el comando FOR de la siguiente manera en el símbolo del sistema:

for %1 in (*.*) do ren %1 test%1

Por ejemplo, esto cambia el nombre de un archivo enc1.ctl a testenc1.ctl enc2.ctl a testenc2.ctl

Eso no es lo que quiero Lo que quiero es enc1.ctl rebautizado como test1.ctl enc2.ctl renombrado como test2.ctl

¿Cómo puedo hacer eso?

@Akelunuk: Gracias, eso funciona, pero tengo nombres de archivos como

h263_enc_random_pixels_1.ctl, h263_enc_random_pixels_2.ctl que quiero cambiar el nombre a

test1.ctl y test2.ctl respectivamente

¿Entonces como?


No estoy seguro de si es posible por lotes, pero nunca dominé este lenguaje primitivo ... :-P

Si CMD no es obligatorio, pero no puede usar un buen renombrador de archivos, puede hacerlo con WSH:

var path= "E:/tmp"; var fso = WScript.CreateObject("Scripting.FileSystemObject"); var folder = fso.GetFolder(path); var files = new Enumerator(folder.files); for (; !files.atEnd(); files.moveNext()) { var file = files.item(); var fileName = file.Name; var p = /^enc(/d+)/.ctl$/.exec(fileName); if (p != null) { var newFileName = "test" + p[1] + ".ctl"; // Optional feedback WScript.echo(fileName + " -----> " + newFileName); file.Move(newFileName); } }

Por supuesto, ponlo en un archivo .js
De hecho, probé con file.Copy(file.ParentFolder + "/SO/" + newFileName); para evitar perder archivos ...

HTH.


Si conoce la cantidad de archivos (digamos 10), puede usar

for /L %1 in (1,1,10) do ren enc%1.ctl test%1.ctl


Esto cambia el nombre de todos los archivos en el directorio para los tipos de archivos de filtro con PREFIX y la fecha y hora de hoy

@echo ON cls for %%a in (*.pdf) do (set myfiledate=%%~ta echo !myfiledate!) echo Date format = %myfiledate% echo dd = %myfiledate:~0,2% echo mm = %myfiledate:~3,2% echo yyyy = %myfiledate:~6,4% echo. echo Time format = %myfiledate% echo hh = %myfiledate:~11,2% echo mm = %myfiledate:~14,2% echo AM = %myfiledate:~17,2% echo. echo Timestamp = %myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2% ECHO "TEST..." > "test-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%.txt" PAUSE

Este ecualiza con éxito la fecha modificada y el tiempo como un sufijo, pero no analiza la información en el cambio de nombre. No puedo entender por qué, pero está muy cerca. Tal vez alguien no puede modificar para adaptarse a su propósito.

@echo ON setlocal cls for %%a in (*.pdf) do (set myfiledate=%%~ta echo !myfiledate!) :DATETIME echo Date format = %myfiledate% echo dd = %myfiledate:~0,2% echo mm = %myfiledate:~3,2% echo yyyy = %myfiledate:~6,4% echo Time format = %myfiledate% echo hh = %myfiledate:~11,2% echo mm = %myfiledate:~14,2% echo AM = %myfiledate:~17,2% = %myfiledate:~17,2% echo. echo Timestamp = %myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2% ECHO "TEST..." > "test-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%.txt" for /f "delims=" %%a in (''dir *.pdf /t:a /a:-d /b /s'') do call :RENAME "%%a" :RENAME REM for /f "tokens=1-6 delims=/ " %%a in (''dir %%a /t:w^|find "/"'') do ( ren %%a "3DC-test-OFF-ELE-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%~x1") PAUSE GOTO :EOF