Título: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: ovichan en 5 Octubre 2012, 19:30 pm Hola otra vez :rolleyes:, en esta ocasion estoy intentado añadir a un archivo un prefijo en su nombre, que coincide con el nombre de la subcarpeta contenedora, y me explico con un ejemplo.
Los archivos en cuestion son del tipo: 7. Español.ass y 7. Japones.ass. Estan contenidos en subdirectorios con esta ruta: D:\DBZ\DBZ1_14\079. Como imaginareis los tres digitos ultimos son los que varian siempre, de manera que intento que quede los archivos renombrados asi: 079 - Español.ass. El renombrado deseo hacerlos sobre una copia de ese archivo. He iniciado un codigo para comprobar si puedo almacenar en una variable cada prefijo pero no funciona: Código: for /R %%i in (*.ass) do ( Si unicamente hago echo de la variable i, sale la ruta de cada archivo de forma correcta. Imagino que tenga que ver con la recursividad pero no se como solucionarlo con este mismo codigo. Imagino que habra otra manera mas correcta pero no me enteraré de lo que estoy haciendo. De forma teorica el codigo general seria algo asi: Código: for /R %%i in (*.ass) do ( No funciona ni a tiros pero estructuralmente esto es lo que deseo hacer. Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: RevangelyonX en 5 Octubre 2012, 21:12 pm Ahora no lo puedo probar aunque diria que el substring no te funciona porque no tienes el set enabled expansion local puesto.
Elektro Hacker supongo que lo confirmará. ;) Salu2 Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: Eleкtro en 5 Octubre 2012, 23:20 pm Elektro Hacker supongo que lo confirmará. ;) Exacto xD Como bien te ha dicho el amigo RevangelionX, no te funciona porque no estás expandiendo la variable para poder usarla en el FOR. Pero aparte de eso, el parámetro "/R" del for es muy mala idea usarlo en casos como este, el for procesa los archivos ASS de la carpeta (Uno por uno), pero en el momento que uno de esos archivos es "prefijado" el for puede procesar ese nuevo archivo si el nuevo nombre del archivo está entre los que el For todavía no a procesado por el orden alfabético... si tenemos el archivo "A" y "B", y el archivo "A" es renombrado a "C" antes de procesar el archivo "B" , el For procesará también el archivo "C" porque el FOR aún no ha llegado a esa letra alfabéticamente hablando, no se si me entiendes, asi que se volverá a "re-prefixear" ese archivo.., me ha pasado muchisimas veces en ocasiones parecidas... Código Saludos Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: ovichan en 6 Octubre 2012, 00:18 am Ok, no almacenan en um stack los archivos que debe procesar, lo hace de manera secuencial. Esto lo pillo,, pero no se pq utilizas tokens=*. Y el hecho de usar signos exclamativos tampoco lo entiendo. Lo del for con el dir combinado lo he visto usar para los instaladores independientes de updates de windows, precisamente para listar los archivos a procesar.
Gracias. Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: Eleкtro en 6 Octubre 2012, 00:34 am no se pq utilizas tokens=* El for /F por defecto tiene habilitado el delimitador de la cadena, y como ya sabrás, los tokens se delimitan al encontrar un (espacio), como un argumento, pues eso, le indico que Comprueba lo que obtienes sin definir los tokens... el hecho de usar signos exclamativos tampoco lo entiendo. Citar EnableDelayedExpansion http://ss64.com/nt/delayedexpansion.htmlDelayed Expansion will cause variables to be expanded at execution time rather than at parse time, this option is turned on with the SETLOCAL command. When delayed expansion is in effect variables may be referenced using !variable_name! Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: ovichan en 6 Octubre 2012, 14:41 pm Buenas, ya he comprobado todo pero he tenido que adaptarlo ya que en los 9 primeros dvds, la ruta cambia a D:\DBZ\DBZ1_1\001. Para eso he utilizado un if con este codigo de prueba y devuelve los valores correctos:
Código: set "nom=H:\DBZ\DBZ1_11\061\7. Japones.ass" Al insertarlo en el for, me da un error al crear los archivos, los crea mal y separa los nombre, etc... no se si sera por usar la ñ. Código: @echo off Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: Eleкtro en 6 Octubre 2012, 15:03 pm Sinceramente, es imposible saber que variable "coje" mal el rango de caracteres sin que aportes los archivos necesarios con el nombre exacto de las rutas y archivo para poder recrear la situación en otro pc, porque la sintaxis en general está bien.
EDITO: Prueba poniendo: Código para ver si está todo correcto... saludos Título: Re: [Batch] Renombrado masivo de archivos ass con prefijo de la subcarpeta Publicado por: ovichan en 6 Octubre 2012, 17:47 pm Fallo mio, se me fue la olla y probando no actualice la ruta devlos archivos. Gracias de nuevo.
|