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

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
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
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
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
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
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
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
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
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
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
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
karirovax Mensajes publicados 3584 Estado Miembro 215
 
dame un ejemplo
0
karirovax Mensajes publicados 3584 Estado Miembro 215
 
si he entendido bien, por ejemplo, el “é” en DOS es “Alt+0130”
0
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
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
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
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
karirovax Mensajes publicados 3584 Estado Miembro 215
 
¿Qué hay de nuevo?
0
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
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
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
mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
 
No, es 850
0
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
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
karirovax Mensajes publicados 3584 Estado Miembro 215
 
sí, es que sólo le digo
que debe reemplazar la é por , y así sucesivamente
0
mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
 
ok intento ;)
EDIT : ahhhh funciona :P gracias ^^ !
0
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
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
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
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
karirovax Mensajes publicados 3584 Estado Miembro 215
 
0
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
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
mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
 
¡Ok, gracias!
0
karirovax Mensajes publicados 3584 Estado Miembro 215
 
Hola, de nada ;)
0
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
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
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
mael9 Mensajes publicados 373 Fecha de registro   Estado Miembro Última intervención   30
 
Gracias, ¡de nada!
0
karirovax Mensajes publicados 3584 Estado Miembro 215
 
de nada ;)
0
theo7777 Mensajes publicados 117 Estado Miembro 42
 
El script ha sido modificado :)
0
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