Lote: aleatorio

Resuelto
mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   -  
 CARCY -
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. cs-bilou Mensajes publicados 836 Estado Miembro 164
     
    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 !
    3
    1. Cloud13
       
      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
      0
    2. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      hola Cloud13 ;)

      tiene que la extensión de su archivo sea .bat o .cmd y no .txt
      0
    3. Cloud13
       
      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.
      0
    4. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      Re,

      agregue al final de tu batch el comando pause (justo después del comando msg * %phrase%)
      0
    5. Cloud13
       
      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 ;)
      0
  2. karirovax Mensajes publicados 3584 Estado Miembro 215
     
    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
    0
  3. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    ¿Podrías darme un ejemplo?
    Acabo de empezar el batch :S
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      hola
      pero primero hay que empezar con los comandos que te doy aquí !
      si cometes errores no es grave, intento ayudarte
      0
  4. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    Gracias, voy a intentarlo =) ! =)

    EDIT :
    ¡Muchas gracias!! ¡Justo lo que necesito!!
    0
  5. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    Pequeño problema: ¿cómo hacer para que se tengan en cuenta los acentos? ahora los transforma en letras extrañas :-/....
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      dame un ejemplo
      0
    2. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      si he entendido bien, por ejemplo, el “é” en DOS es “Alt+0130”
      0
  6. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    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?!
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      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
      0
    2. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
       
      No acabo de entender... ¿este comando permitirá mostrar las é y las è correctamente?
      0
    3. karirovax Mensajes publicados 3584 Estado Miembro 215
       

      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
      0
    4. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      ¿Qué hay de nuevo?
      0
    5. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
       
      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
      0
  7. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    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....
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      Hola
      escribe
      graftabl en la línea de comandos y dime si el código es 720
      0
  8. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    No, es 850
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      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
      0
  9. cs-bilou Mensajes publicados 836 Estado Miembro 164
     
    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!
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      sí, es que sólo le digo
      que debe reemplazar la é por , y así sucesivamente
      0
  10. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    ok intento ;)
    EDIT : ahhhh funciona :P gracias ^^ !
    0
  11. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    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' !
    0
  12. cs-bilou Mensajes publicados 836 Estado Miembro 164
     
    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!
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      sí, tienes razón
      entonces felicitaciones Mael9
      y si tienes otras observaciones/preguntas ..etc así que estamos aquí para ti
      cordialmente ;)
      0
  13. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    Sí, lo siento, pero pensaba poner "tema resuelto" en otro mensaje ^^'
    Adiós ;)
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      0
  14. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    Tema no resuelto de nuevo,
    ¿cómo hacer el mismo script en Linux (Ubuntu)? no conoce ciertos comandos... setlocal...@echo off..
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      Hola, en Ubuntu hay un shell bash (no hay @)

      para más información visita el sitio de zéro
      https://openclassrooms.com/fr/courses
      0
    2. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
       
      ¡Ok, gracias!
      0
    3. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      Hola, de nada ;)
      0
  15. theo7777 Mensajes publicados 117 Estado Miembro 42
     
    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 />
    0
  16. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
     
    ¿Quién corre bajo Windows... no bajo Linux :-/ pero que no permite el "aleatorio" y para qué sirve el archivo "save.txt"?
    0
    1. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      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
      0
    2. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
       
      Gracias, ¡de nada!
      0
    3. karirovax Mensajes publicados 3584 Estado Miembro 215
       
      de nada ;)
      0
    4. theo7777 Mensajes publicados 117 Estado Miembro 42
       
      El script ha sido modificado :)
      0
    5. mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
       
      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
      0