Lote: aleatorio

Resuelto
Bonjour,
Quiero que al arrancar Windows se abra automáticamente un archivo .bat y escriba una frase almacenada en ese .bat de forma aleatoria (cada inicio una diferente si es posible).
Me gustaría un ejemplo del tipo:
::::: edición del bat ::::::
frases :
"mi frase 1"=1; "mi frase 2"=2; "mi frase 3"=3...
arranque : mostrar 1
arranque siguiente : frase anterior +1
arranque siguiente siguiente : frase anterior +1 (creo que así debe hacerse)
si no es posible hacer que sea diferente en cada arranque, la función aleatoria me serviría
¡Gracias por vuestra ayuda!

16 respuestas

  1. Aquí tienes algo que hice rápido.
    Entonces el archivo phrase.txt que contiene un montón de frases:
    Salut ça va ? Bonjour a toi Hello man !! BlaBlaBli Carrote ?


    Y luego el .bat que contiene los comandos.
    @echo off setlocal enableDelayedExpansion ::Número de frases Total. set phraseTotal=0 for /f %%i in ('type "phrase.txt"') do set /a phraseTotal+=1 ::Selección al azar de una de las frases. call set /a LignePhrase=%%random%%%%%%%phraseTotal% ::Extracción de la frase. set ligne=0 for /f "delims=""" %%i in ('type "phrase.txt"') do ( if !ligne!==!LignePhrase! set phrase=%%i set /a ligne+=1 ) ::Mostrar la frase msg * %phrase%


    Voilà, tienes que colocar el phrase.txt y el .bat en la carpeta dossier, bueno, al lado.

    Cordialmente,
    Bilou.
    Il y a des jours faut pas m'chercher.
    Et y'a des jours tous les jours !
    1. Espero que vuelvas por aquí porque no entiendo bien qué debo hacer para que funcione. Copié-pegué desde @echo off, hasta %phrase% y aun así mi archivo no funciona.
      Ya he reemplazado el valor del número total de frases pero no veo qué más debo hacer. (los dos archivos están en la misma carpeta)

      Gracias de antemano =D
    2. hola Cloud13 ;)

      tiene que la extensión de su archivo sea .bat o .cmd y no .txt
    3. Hola karirovax
      Ya estaba así, pero cuando lo ejecuto, me muestra:
      "Ingrese mensaje enviar; CTRL+Z en nueva línea para terminar el mensaje, luego ENTER"

      Y sea lo que escriba, cmd.exe se cierra una vez que presiono ctrl+z y luego Enter, y no veo ningún cambio en ningún lugar.
    4. Re,

      agregue al final de tu batch el comando pause (justo después del comando msg * %phrase%)
    5. Hay progreso =D
      Pero todavía no funciona ^^'
      Ahora me muestra "Error 1702 al obtener los nombres de sesión"
      Voy a hacer una búsqueda en Google para este famoso error, pero me gustaría que me aclararan aquí también ;)
  2. hola
    no creo que un solo batch permita mostrar mensajes en cada inicio, pero eso cambia si el propio batch es modificado
    para los comandos
    AT /?
    For /?
    if /?
    echo /?
    Goto /?
    así que les queda mejorar los comandos
    1. ¿Podrías darme un ejemplo?
      Acabo de empezar el batch :S
      1. hola
        pero primero hay que empezar con los comandos que te doy aquí !
        si cometes errores no es grave, intento ayudarte
    2. Pequeño problema: ¿cómo hacer para que se tengan en cuenta los acentos? ahora los transforma en letras extrañas :-/....
      1. si he entendido bien, por ejemplo, el “é” en DOS es “Alt+0130”
    3. Alt+130 sí, pero en mi archivo frase.txt hay acentos, por ejemplo:
      No hay teoría de la evolución. Solo una lista de especies que Chuck Norris autoriza a sobrevivir.

      teoría : é
      especies : è
      (Chucknorrisfacts)

      Y bueno, el mensaje que aparece no pone las e con acento ni è ni à... ni ë ä â ê....
      me pone una U con acento en su lugar.... ¿cómo hago?!
      1. hola
        en la línea de comandos escribe:
        echo é >mael9.txt
        luego
        echo è >>mael9.txt
        y voilà las dos líneas son sucesivamente las é y è
        así que sustitúyelas en tus archivos
      2. No acabo de entender... ¿este comando permitirá mostrar las é y las è correctamente?
      3. sí
        si hago únicamente echo é entonces ves los resultados directamente en la consola, pero añadir el > es para la redirección hacia un archivo (en tu caso es mael9.txt) para, por ejemplo, ver los resultados en tu escritorio con el nombre coucou.txt por lo que escribe echo é >Bureau\coucou.txt
        en la segunda línea la doble redirección (>>) es para no sobrescribir el primer resultado con el segundo
        creo que ya lo has entendido
      4. No, pero no es lo que busco... no deben escribirse é y è en un archivo...
        Están en mi archivo phrase.txt (donde hay frases con acentos como se dijo antes) y cuando ejecuto mi archivo .bat, toma una frase al azar que está en phrase.txt, pero no muestra bien los acentos ;)
        aquí está mi problema,
        esperando haber sido más claro,
        mael9
    4. Ok, voy a intentarlo con Powerbatch
      Pero en realidad
      é = ,
      è = ?
      à = ...
      porque cuando lo pongo en el símbolo del sistema
      echo.J'espère qu'il sera présent à la maison. > cat.txt
      él escribe eso :

      J'espSre qu'il sera pr'sent ... la maison....
      1. Hola
        escribe
        graftabl en la línea de comandos y dime si el código es 720
    5. No, es 850
      1. entonces está bien
        he notado que no hay problema
        usted dice:
        echo.J'espère qu'il sera présent à la maison. > cat.txt
        il mécrit ça

        J'espSre qu'il sera pr'sent ... la maison....
        entonces está bien porque otra ejecución de su primer ejemplo en el archivo cat.txt en lugar de phrase.txt funciona muy bien
        creo que no me entiende bien lo que dije
    6. Hola Bilou,

      Con el código que te di normalmente los caracteres deberían mostrarse correctamente ya que se muestran en una ventana de diálogo.

      Lo que haces tú es escribir en un archivo de texto pasando por DOS, para eso hay que hacer:
      En PowerBatch, cuando escribes una é, te pone una ,
      Y bueno, copia la , para reemplazarla en lugar de las é en tu bat abierto con el Bloc-Notes.
      O si no, simplemente guarda directamente con PowerBatch.

      Atentamente,
      Bilou.

      Hay días en los que no hay que buscarme.
      ¡Y hay días que todos los días!
      1. sí, es que sólo le digo
        que debe reemplazar la é por , y así sucesivamente
    7. Ben topic résolu !
      J'avais déja Powerbatch et j'avais jamais remarqué qu'il transformais les lettres directement les accents u_u' ! Tema resuelto!
      Ya tenía Powerbatch y nunca me había dado cuenta de que transformaba las letras directamente los acentos u_u' !
      1. De nada por haberte ayudado. Si tienes otra pregunta, no dudes en publicar.

        Ps: evita los mensajes duplicados, está mal visto.

        Atentamente,
        Bilou.
        Hay días en los que no hay que buscarme.
        ¡Y hay días en los que todos los días!
        1. sí, tienes razón
          entonces felicitaciones Mael9
          y si tienes otras observaciones/preguntas ..etc así que estamos aquí para ti
          cordialmente ;)
      2. Entre debut partie modifie et fin partie modifie l'ancien code est
        if not exist save.txt echo 1>save.txt
        set /p nombre=<save.txt />
        1. ¿Quién corre bajo Windows... no bajo Linux :-/ pero que no permite el "aleatorio" y para qué sirve el archivo "save.txt"?
          1. hola mael9

            el número aleatorio en bash de linux es la orden RANDOM, así que intenten con la ayuda de la orden RANDOM --help

            respondo para el archivo save.txt

            en la línea :
            if not exist save.txt echo 1>save.txt
            si el archivo save.txt no existe entonces muestra un "1" y lo guarda en el archivo save.txt

            set /p nombre= <save.txt
            la orden set /p nombre= permite esperar la entrada desde el teclado pero hay después de esta orden el <save.txt en este caso sabemos que el número 1 está almacenado en este archivo y mientras hay una redirección inversa ( el < menor) así que el contenido de este archivo es el de la entrada para la orden SET /P nombre= es decir si como si hubiéramos escrito directamente el número desde el teclado numérico 1
          2. El script ha sido modificado :)
          3. gracias, voy a intentarlo
            EDITAR :
            Con este código aquí está el error :
            /home/ubuntu/Desktop/fichier.bat: línea 1: @echo : comando no encontrado
            /home/ubuntu/Desktop/fichier.bat: línea 12: error de sintaxis cerca del símbolo inesperado « ( »
            /home/ubuntu/Desktop/fichier.bat: línea 12: 'set /a nombre=(%random%%%10)+1 '
            ubuntu@ubuntu:~$ /home/ubuntu/Desktop/fichier.bat