elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batch Eliminar Doble Extensión (SOLUCIONADO)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Batch Eliminar Doble Extensión (SOLUCIONADO)  (Leído 12,710 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Batch Eliminar Doble Extensión (Ayuda)
« Respuesta #10 en: 17 Septiembre 2014, 18:33 pm »

funciono de maravilla, puedes explicarme así como para mongolico esa linea y cerrar el tema si puedes

Citar
Código
  1. For /F "Tokens=1-2,* delims=." %%a In ('Dir /B /A "*.encrypted.txt"') DO ()

En el parámetro 'Tokens' especifico que la cadena debe partirse en 3 partes (nombre, .doc, encrypted.txt), la variable %%a contiene el primer token (nombre), la variable %%b contiene el segundo token (.doc), y la variable %%c contiene el resto de la cadena (.encrypted.txt)

Citar
Código
  1. Ren  "%%~fa.%%b.%%c"    "%%~na.%%b"

Creo que esa linea no necesita explicaciones, uso el contenido de las variables (junto a los modificadores ~f y ~n) para especificar su ubicación y renombrar los archivos.

Usa la ayuda del comando si tienes dudas:
Código:
Rename.exe /?


En línea



kaisersouse2

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Batch Eliminar Doble Extensión (Ayuda)
« Respuesta #11 en: 17 Septiembre 2014, 20:14 pm »

muchisimas gracias hermano


En línea

kaisersouse2

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Batch Eliminar Doble Extensión (SOLUCIONADO)
« Respuesta #12 en: 17 Septiembre 2014, 21:21 pm »

Otra pregunta, lo hago en el mismo tema porque es parte del mismo codigo, como logro eliminar varios archivos de una carpeta excluyendo por ejemplo solo los .encrypted logre solo listarlos  con dir /B/S/A-D | findstr /v "\.encrypted" pero no lo he podido hacer con del, gracias de antemano
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Batch Eliminar Doble Extensión (SOLUCIONADO)
« Respuesta #13 en: 17 Septiembre 2014, 21:56 pm »

prueba así
Código
  1. For /F "Delims=*" %%# in ('dir /B /S /A-D "%CD%\*" ^| find /v ".encrypted"') do (
  2.    Echo "%%~f#"
  3.    REM Del /Q "%%~f#"
  4. )

saludos.
« Última modificación: 17 Septiembre 2014, 21:58 pm por Eleкtro » En línea



kaisersouse2

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Batch Eliminar Doble Extensión (SOLUCIONADO)
« Respuesta #14 en: 18 Septiembre 2014, 14:42 pm »

Excelente solo habia que eliminar el rem, saludos
En línea

kaisersouse2

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Batch Eliminar Doble Extensión (Ayuda)
« Respuesta #15 en: 30 Septiembre 2015, 21:27 pm »

@kaisersouse2

No es necesario que me envies un email, usa el tema que abriste para formular preguntas.

Código
  1. @Echo OFF
  2.  
  3. For /F "Tokens=1-2,* delims=." %%a In ('Dir /B /A "*.encrypted.txt"') DO (
  4. Echo "%%~fa.%%b.%%c" ^> "%%~fa.%%b"
  5. Ren  "%%~fa.%%b.%%c"    "%%~na.%%b"
  6. )
  7.  
  8. Pause&Exit


Saludos Electro un gusto saludarte a un año de haberme ayudado con el código que me enviaste fue de mucha utilidad, pero como todo cambia incluso mi programa tengo una duda.

En el parámetro 'Tokens' se especifica que la cadena debe partirse en 3 partes (nombre, .doc, encrypted.txt), la variable %%a contiene el primer token (nombre), la variable %%b contiene el segundo token (.doc), y la variable %%c contiene el resto de la cadena (.encrypted.txt) todo esto esta muy bien, pero tengo un problema al tener un archivo con un nombre como por ejemplo: "llave 1.2.pem.encrypted.txt" cuando corre el codigo en vez de eliminar solo el .encrypted.txt me vuela el .pem.encrypted quedando el archivo como
llave 1.2 debiendo quedar llave 1.2.pem, esto es por darte un ejemplo, podría tener un archivo que se llamase loquesea 1.2.1.pem, no se si me explico, podrías ayudarme
« Última modificación: 30 Septiembre 2015, 21:52 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Batch Eliminar Doble Extensión (SOLUCIONADO)
« Respuesta #16 en: 30 Septiembre 2015, 22:03 pm »

Claro, en ese For utilicé el punto como delimitador asumiendo que el nombre "real" del archivo se puede tokenizar en 2 partes, si desconoces la cantidad de puntos que habrán en los nombres entonces debes recurrir a otra técnica, por ejemplo a un reemplazamiento de string:

Código
  1. @Echo OFF
  2.  
  3. Set "ext=encrypted.txt"
  4.  
  5. For %%_ In ("*.%ext%") DO (
  6. Set "filename=%%~nx_"
  7. Call Set "filename=%%filename:.%ext%=%%"
  8. Call Echo "%%~nx_" - "%%filename%%"
  9. Call Ren  "%%~f_"    "%%filename%%"
  10. )
  11.  
  12. Pause&Exit

Saludos
« Última modificación: 30 Septiembre 2015, 22:12 pm por Eleкtro » En línea



kaisersouse2

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Batch Eliminar Doble Extensión (SOLUCIONADO)
« Respuesta #17 en: 30 Septiembre 2015, 22:39 pm »

Claro, en ese For utilicé el punto como delimitador asumiendo que el nombre "real" del archivo se puede tokenizar en 2 partes, si desconoces la cantidad de puntos que habrán en los nombres entonces debes recurrir a otra técnica, por ejemplo a un reemplazamiento de string:

Código
  1. @Echo OFF
  2.  
  3. Set "ext=encrypted.txt"
  4.  
  5. For %%_ In ("*.%ext%") DO (
  6. Set "filename=%%~nx_"
  7. Call Set "filename=%%filename:.%ext%=%%"
  8. Call Echo "%%~nx_" - "%%filename%%"
  9. Call Ren  "%%~f_"    "%%filename%%"
  10. )
  11.  
  12. Pause&Exit

Saludos, Funciono de maravilla de hecho use un for /r para recursividad para que busque dentro de las carpetas que esten en ese directorio.

Otra cosa podrías como en anteriores ocasiones y también para los que lean esto en un futuro, como funciona el código, así como para dummies. y de nuevo gracias  ;-).
« Última modificación: 30 Septiembre 2015, 22:54 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Batch Eliminar Doble Extensión (SOLUCIONADO)
« Respuesta #18 en: 30 Septiembre 2015, 23:03 pm »

Otra cosa podrías como en anteriores ocasiones y también para los que lean esto en un futuro, como funciona el código, así como para dummies. y de nuevo gracias  ;-).

Más bien voy a tener que epxlicarte cómo funciona la etiqueta QUOTE, que me estás dando trabajo con eso corrigiendo las citas que haces xD.

El código es muy, muy sencillo, realmente no hay mucho que decir por que no hay nada así complicado, pero lo intentaré:

Primero de nada, establezco la extensión, asignándola a una variable para tener una referencia corta.
Citar
Código:
Set "ext=encrypted.txt"

Luego, uso un For para iterar los archivos del directorio de trabajo, usando como patrón de búsqueda para los archivos la extensón de antes ("*.encrypted.txt")
Citar
Código:
For %%_ In ("*.%ext%") DO ...

La variable de FOR (%%_) no nos sive de mucho ya que no sabemos la cantidad de puntos "." que puede contener un nombre de archivo, así que asigno a una nueva variable el nombre completo incluyendo la extensión:
Citar
Código:
Set "filename=%%~nx_"

Seguidamente, hago un reemplazamiento de string para eliminar del nombre la extensión que habiamos asignado al principio (".encrypted.txt")
Citar
Código:
Call Set "filename=%%filename:.%ext%=%%"

Y por último, renombramos el archivo.
Citar
Código:
Call Ren  "%%~f_"    "%%filename%%"

Nota(s):
- El comando Call es necesario por la expansión de variables, pero se puede reemplazar por el uso de SetLocal EnableDelayedExpansion si uno quiere hacerlo.

- El modificador ~n de la variable de For devuelve el nombre del archivo, el modificador ~x la extensión, y el modificador ~f la ruta absoluta.

Saludos
« Última modificación: 30 Septiembre 2015, 23:08 pm por Eleкtro » En línea



Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines