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