Título: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: kaisersouse2 en 17 Septiembre 2014, 16:44 pm Buenos días, tengo un detalle con un código de desencriptación que tengo en un batch, resulta que en la salida me genera un lote de archivos de tipo:
Archivo1.doc.encrypted.txt Archivo2.doc.encrypted.txt Archivo3.doc.encrypted.txt . . Archivon.doc.encrypted.txt El tema es que necesito una linea que me elimine el .encrypted.txt de todos los archivos que encuentre en esa ruta y me deje solo el nombre de el archivo con su extensión inicial. Saludos y gracias de antemano Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: daryo en 17 Septiembre 2014, 16:59 pm Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: Eleкtro en 17 Septiembre 2014, 17:03 pm Batch Eliminar Doble Extensión Hola Solo para dejar claro una cosa, en realidad los archivos tienen 1 sola extensión (que es: .txt), el resto que podriamos considerar extensiones (.doc, .encrypted) no lo son, eso se considera contenido del nombre del archivo (contenido con puntos) y por ende es imposible reconocerlos como extensiones de manera eficiente. Pero, como conoces exactamente la cadena que quieres eliminar y también conoces cuantas palabras con puntos son, la tarea es bien facil: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje Parece que ya te contestaron :P Saludos. Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: kaisersouse2 en 17 Septiembre 2014, 17:52 pm me dice que la sintaxis no es correcta, help me please [MOD]: No está permitido hacer doble post. Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: daryo en 17 Septiembre 2014, 17:56 pm si ejecutas directamente el comando en ves de ponerlo en un archivo .bat y abrirlo cambia las %%a por %a las %%b por %b y asi con todos
Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: kaisersouse2 en 17 Septiembre 2014, 18:13 pm que tal daryo sigue sin funcionar, apoyame con eso necesito el pez no la caña jajaja, necesito que lea todos los
Archivo1.doc.encrypted.txt Archivo2.doc.encrypted.txt Archivo3.doc.encrypted.txt . . Archivon.doc.encrypted.txt dentro de una carpeta y me elimine .encrypted.txt esos 14 caracteres y me deje por ejemplo solo: Archivo1.doc segui tus instrucciones al pie de la letra y no corrio Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: Eleкtro en 17 Septiembre 2014, 18:16 pm @kaisersouse2
No es necesario que me envies un email, usa el tema que abriste para formular preguntas. Código Saludos. Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: kaisersouse2 en 17 Septiembre 2014, 18:19 pm Disculpa bro soy nuevo en este tema de los foros
Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: Eleкtro en 17 Septiembre 2014, 18:20 pm Disculpa bro soy nuevo en este tema de los foros ok, no pasa nada :P ¿te funcionó el código? saludos Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: kaisersouse2 en 17 Septiembre 2014, 18:24 pm funciono de maravilla, puedes explicarme así como para mongolico esa linea y cerrar el tema si puedes
Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: Eleкtro 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 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 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 /? Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: kaisersouse2 en 17 Septiembre 2014, 20:14 pm muchisimas gracias hermano
Título: Re: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: kaisersouse2 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
Título: Re: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: Eleкtro en 17 Septiembre 2014, 21:56 pm prueba así
Código
saludos. Título: Re: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: kaisersouse2 en 18 Septiembre 2014, 14:42 pm Excelente solo habia que eliminar el rem, saludos
Título: Re: Batch Eliminar Doble Extensión (Ayuda) Publicado por: kaisersouse2 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 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 Título: Re: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: Eleкtro 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 Saludos Título: Re: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: kaisersouse2 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 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 ;-). Título: Re: Batch Eliminar Doble Extensión (SOLUCIONADO) Publicado por: Eleкtro 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 |