Lote: aleatorio
Resuelto
mael9
Mensajes publicados
373
Fecha de registro
Estado
Miembro
Última intervención
-
CARCY -
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!
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
Aquí tienes algo que hice rápido.
Entonces el archivo phrase.txt que contiene un montón de frases:
Y luego el .bat que contiene los comandos.
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 !
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 !
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
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
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?!
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?!
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
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
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
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
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
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
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!
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!
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' !
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' !
Tema no resuelto de nuevo,
¿cómo hacer el mismo script en Linux (Ubuntu)? no conoce ciertos comandos... setlocal...@echo off..
¿cómo hacer el mismo script en Linux (Ubuntu)? no conoce ciertos comandos... setlocal...@echo off..
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
para más información visita el sitio de zéro
https://openclassrooms.com/fr/courses
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 />
if not exist save.txt echo 1>save.txt
set /p nombre=<save.txt />
¿Quién corre bajo Windows... no bajo Linux :-/ pero que no permite el "aleatorio" y para qué sirve el archivo "save.txt"?
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
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
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
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
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
tiene que la extensión de su archivo sea .bat o .cmd y no .txt
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.
agregue al final de tu batch el comando pause (justo después del comando msg * %phrase%)
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 ;)