Buenas ;-)
Estoy intentando cambiar de manera masiva las extensiones de ciertos archivos, para ello he creado este código
@echo off
Title Renombrar extensiones de archivos
for %%i in ("Anna Grace _ You Make Me Feel.m4r") do (
set filename="%%~ni"
echo %~dp0%filename%.m4r
echo %filename%.m4a
rename %~dp0%filename%.m4r %filename%.m4a
)
pause>nul
Sin embargo, no funciona. Si a partir del set, lo saco del bucle, filename si pilla el nombre pero el rename sigue sin funcionar. Qué estoy haciendo mal.
Saludos y gracias de antemano.
Hay varias cosas mal y otras que sobran, Aquí tienes:
@echo off
Title Renombrar extensiones de archivos
for %%i in (*.m4r) do (
REM Echo [+] %%~fi & Echo %%~dpni.m4a | MORE
ECHO [Renombrado]: %%~nxi ^> %%~ni.m4a
REN "%%~fi" "%%~ni.m4a"
)
pause>nul
(http://img42.imageshack.us/img42/9140/captura1li.png)
saludos
Cita de: ovichan en 19 Septiembre 2012, 16:40 PM
Si a partir del set, lo saco del bucle, filename si pilla el nombre pero el rename sigue sin funcionar. Qué estoy haciendo mal.
Si quieres mostrar o usar la variable filename como intentabas, usa call y un simbolo de porcentaje extra:
For... (
Call Echo %%FILENAME%%
Call RENAME "%%FILENAME%%"
)
O habilita la expansión de variables.
Setlocal enabledelayedexpansion
For... (
Echo !FILENAME!
)
Una preguntilla, por que usas %%~fi, no deberia valer con %%~nxi??? Y.por que el uso de dobles %%, es para que las interprete como las variables locales del bucle??
Cita de: ovichan en 20 Septiembre 2012, 02:58 AM
Una preguntilla, por que usas %%~fi, no deberia valer con %%~nxi???
En la linea de comentario "REM" simplemente te daba un ejemplo de como expandir a la ruta completa del archivo porque tu lo estabas intentando con "%~dp0"
"NX" expande al nombre y extensión del archivo, No es suficiente a menos que el FOR recorra subdirectorios con el parámetro "\R", en el cual nisiquiera sería necesario expandir a un nombre o ruta, bastaría con usar la variable en sí misma "%%i"
Cita de: ovichan en 20 Septiembre 2012, 02:58 AMY.por que el uso de dobles %%, es para que las interprete como las variables locales del bucle??
Exacto sinó no las reconocería.
Si intentas ejecutar un FOR directamente desde la consola entonces solo debes usar un simbolo %.
EDITO: hmmm ahora que vuelvo a leer tu pregunta creo que te estabas refiriendo a la variable "%%FILENAME%%" es por lo mismo, por la recursividad, si.
Saludos
Siento no haber respondido antes, gracias por tu aclaración.
Para eso estamos ::)
Saludos.