Si aun así eso no te sirve, puedes intentar buscar otra solución en Google, u otras herramientas más profesionales y que te permitan automatizar la tarea.
perdona, pero me he perdido un poco ¿de donde sale ese executable?
Ahora veo que me confundí en mi comentario anterior y escribí la extensión "ASSOC7.exe" en lugar de "ASSOC7.bat", quizás hayas mal interpretado eso, perdon, es la costumbre.
Lo siento, hacia mucho que no lo utilizaba, reectifico y te explico de nuevo:
1) Copias el código en un archivo con extensión ".bat", con codificación ANSI (es la codificación por defecto si creas y guardas el archivo desde el Notepad) 2) Llamas al archivo "ASSOC.bat" 3) Ejecutas el siguiente comando (especificando la ruta completa del programa en el segundo parámetro):
Código:
ASSOC.bat -a ".png" "C:\Windows\System32\mspaint.exe"
Debería salirte algo parecido a esto (dependiendo de varios factores):
Felicidades a todos los ganadores, gracias a todos por participar en este concurso, y cómo no a los miembros del staff y otros que han hecho posible este concurso un año más...
PD: el-brujo contactará con ustedes para el tema de los envios (los premios), porfavor tengan algo de paciencia.
Batch es una herramienta simple, no es un lenguaje capacitado para procesar un String con las condiciones que precisas, se podría hacer, pero habría que invertir bastante tiempo en el desarrollo y elaboración del algoritmo para finálmente obtener un código muy engorroso e ineficiente a diferencia de cómo se podría llevar a cabo en un lenguaje de verdad.
Podrías partir la cadena según la cantidad de espacios entre palabra y palabra, pero dijiste algo de la longitud y no se si será respecto a los espacios, así que de todas formas te sugiero una solución más global, utilizar expresiones regulares (RegEx) ya que supongo que la fecha siempre tendrá el mismo formato: 19xx o 20xx y te puedes servir en eso, aunque para esto debes recurrir a cualquier otro lenguaje que soporte RegEx (VisualBasicScripting, por ejemplo, que está integrado en cualquier Windows, aunque es otro lenguaje simple e igual de inproductivo que Batch).
Esta podría ser una expresión regular que cumpliese con tus espectativas:
Código:
(^\w+)\s+([\w\.\,\;\-\s+]+?)\s+(\d{4})\s+(\w+$)
El interior de cada paréntesis representa un grupo, cada grupo captura una palabra/token de la frase, y hay 4 grupos (4 pares de paréntesis) ya que necesitas capturar 4 tokens.
Te muestro un ejemplo de utilización de esa expresión regular en VisualBasic.Net, tomatelo como un pseudo-code para implementarlo en el lenguaje que prefieras, ya que la mecánica de RegEx es casi idéntica en el resto de lenguajes (no su utilización, pero si el tema de la sintaxis y los grupos):
Código
Imports System.Text
PublicClass Form1
#Region " Regular expression "
' La cadena de referencia.
ReadOnlystrAsString="09B321 Alberti Ramirez, Juan 1988 CASADO"
Puedes cambiar la asociación de cualquier archivo mediante Windows: Click derecho > Abrir con... > Elegir programa predeterminado
¿No te sirve eso para llevar a cabo tu propósito?, no se si te entendí bien pero no creo que vayas a querer establecer el programa predeterminado 300 veces al día...
documentándome acerca de los detalles arquitectónicos de las pirámides he quedado sorprendido con algunos detalles sobre la precisión y error mínimo de la colocación de las piedras, así como los largos y kilométricos pasadizos que alberga en su interior, además del corto plazo de construción y las herramientas y materiales empleados para la misma.
No he visto el video, pero he visto decenas de documentales (algunos más fiables que otros) que hablan y documentan practicamente lo mismo, las asombromsas incongluencias tecnológicas de los egipcios, las mediciones exactas y (casi) perfectas que a cualquier arquitecto le resultarían su mayor reto en la vida, una auténtica pesadilla de "copiar".
Sólo puede haber una respuesta a estas incógnitas: 1) Estamos muy equivocados respecto a los conocimientos que adquirieron los arquitectos egipcios por si mismos, los hemos subestimado. 2) Los alienígenas nos enseñaron cómo construir edificaciones para nuestro desarrollo en La tierra, para nuestra evolución como seres humanos, ¿por qué no?.
De hecho no se si sabras que lo egipcios inventaron la electricidad
@Senior++ Con todo mi respeto, ya sabes que yo apoyo la teoría de los alienígenas ancestrales, pero no de la forma en la que nos lo cuenta el señor Erich von Däniken ("autor" de la teoría) o como la cuenta la serie-documental de Ancient Aliens que está totalmente basada en las pamplinas de Erich von Däniken, este individuo solo cuenta mentiras para enriquecer las bases de su teoría y llenar su bolsillo, literalmente.
Esa imagen egipcia que muestras es un cuento, lo diré de otra manera: ¡ESO NO ES UNA BOMBILLA GIGANTE! y lo del interior no es el "filamento" de una bombilla, se trata de una simple serpiente y lo que lo rodea es una superficie que representa otras cosas... una flor de loto de la que brota una burbuja de "vida" de donde sale el primer Dios egipcio, Atum, representado en forma de serpiente, es una representación de la vida y de los dioses como cualquier otra representación egipcia, realmente no es nada fuera de lo normal en esta cultura, se está utilizando el mismo simbolismo egipcio.
Yo a pesar de ser bastante crédulo con este tipo de teorías siempre he intentado contrastar la información que me dan con otras fuentes de opiniones expertas e imparciales (egiptologos, arquitectos, textos antiguos, debunkers, en fin lo que se encuentre por internet), y te puedo asegurar que el 99% o el 100% de todo lo relacionado con la serie Ancient Aliens y con el libro de Erich von Däniken es una farsa, todo está manipulado de forma exagerada, y utilizando argumentos del hombre de paja, la mitad de palabras sacadas de textos antiguos se las inventan para enriquecer falsos argumentos (y esto se puede comparar con las transcripciones reales de textos antiguos).
Hay una verdad muy oculta y muy grande relacionada con los alienígenas y con las civilizaciones antiguas, pero no hay que confiar en todo lo que veamos en la TV.
Me gustaría que te tomases unos minutos para ver este video subtitulado al Castellano, a partir del minuto 4:00 lo comprenderás todo a la perfección:
Refutando "astronautas ancestrales": parte 10 Focos electricos Egipcios
al hacer la segunda solicita detallar dónde y con qué nombre va a ir el archivo ¿Verdad? Bueno, pues he ingresado C:\prueba1.txt y en C: no quedó ningún .txt con esa información. Lo más probable es que yo no esté entendiendo el código
Lo que ocurre es que en el bloque de la opción [2] pido el nombre del archivo, no pido la ruta completa ni tampoco la extensión, el archivo se guarda con el nombre especificado en el directorio de trabajo actual.
El código que escribí es un sólo ejemplo para orientarte y está abierto a modificaciones para adaptarlo a tus necesidades.
Estás intentando simular un 'ElseIf', pero esta es otra característica que no está soportada en Batch (aunque por otro lado si que soporta un 'And', pero de forma invisible). No es necesario que anides los ifs para conseguirlo.
La primera es listar archivos según un criterio ingresado por el usuario
Citar
el problema está en la primer opción, ¿cómo hago para que éste resultado se almacene en una variable? ¿Se puede?
1) Te están pidiendo que listes archivos, no que almacenes el resultado de la búsqueda en una variable, sé que intentas ser eficiente pero en Batch no puedes serlo, así que mi consejo es que no hagas más de lo necesario, es decir, aquello que te piden que hagas.
2) Lamentablemente Batch no llega ni a poder calificarse como "lenguaje de programación", y las variables multi-linea no es una característica soportada (de forma natural) en Batch. Para crear una variable multilinea debes recurrir a un pequeño Hack, algo que te resultaría bastante engorroso en la situación que te encuentras (Dir + For /F + MultiLine Hack):
Había pensado en un arreglo pero nunca hice uno con imágenes y no sé cómo.
Un Array/Colección se puede crear de la misma manera para cualquier tipo de objeto, no tiene mucho misterio solo tienes que asignarle objetos de tipo Bitmap o Image cómo lo harías con enteros para un Array de Integer, por ejemplo.
Si las images no superan los 256x256 de resolución entonces te recomiendo utilizar un ImageList, de lo contrario podrías utilizar una colección genérica de tipo List(<T> Image).
Para el tema de volver a la primera imagen (es decir, el primer elemento de la colección) puedes llevar la cuenta del índice actual en una variable "contador", o bien puedes utilizar los métodos de búsqueda de la lista.
Ejemplo:
VB.Net:
Código
PublicClass Form1
' instancio unas imagenes por defecto para este ejemplo...
PrivateReadOnly img1 As Image = Image.FromFile("D:\Customización\Wallpapers\_Favoritos\001.jpg")
PrivateReadOnly img2 As Image = Image.FromFile("D:\Customización\Wallpapers\_Favoritos\002.jpg")
PrivateReadOnly img3 As Image = Image.FromFile("D:\Customización\Wallpapers\_Favoritos\003.jpg")
PrivateReadOnly img4 As Image = Image.FromFile("D:\Customización\Wallpapers\_Favoritos\004.jpg")
PrivateReadOnly img5 As Image = Image.FromFile("D:\Customización\Wallpapers\_Favoritos\005.jpg")