Comment utiliser l'aléatoire dans le script de commandes?
Comment utiliser l'aléatoire dans le script de commandes?
- pourquoi voulez-vous faire cela plus précisément dans le lot?
- Il est très intéressant de post sur le super-Utilisateur lié à des nombres aléatoires dans des scripts batch vaut la peine d'être mentionnés ici...
Vous devez vous connecter pour publier un commentaire.
%RANDOM%
vous donne un nombre aléatoire entre 0 et 32767.L'aide d'une expression comme
SET /A test=%RANDOM% * 100 /32768 + 1
, vous pouvez la modifier comme vous le souhaitez (ici, l'intervalle est [1...100] au lieu de [0...32767]).SETLOCAL ENABLEDELAYEDEXPANSION
et à l'aide de!RANDOM!
au lieu de%RANDOM%
, comme Eugene posté.%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; il suffit de définirminval
etmaxval
les valeurs appropriées en premier.Vous pouvez contrôler le nombre de gamme avec:
- produira nombre entre 0~99.
Celui-ci:
- produira nombre entre 1~100.
%random% %%100
est pas de la magie de la syntaxe, mais en fait%random % %% 100
avec un moins d'espace, où l'%%
est juste une fuite de%
qui signifie modulo.)Vous voudrez probablement obtenir plusieurs nombres aléatoires, et veulent être en mesure de spécifier une plage différente pour chacun, alors vous devez définir une fonction. Dans mon exemple, j'ai générer des numéros de 25 à 30 avec
call:rand 25 30
. Et le résultat est dansRAND_NUM
après que la fonction se termine.exemple "
donnera un nombre aléatoire compris entre 100 et 50. Assurez-vous d'utiliser uniquement un signe de pourcentage que l'opérande si vous n'êtes pas à l'aide de la ligne dans un script batch!
Vous pourriez faire de cette façon, qui ne nécessite pas de
EnableDelayedExpansion
où
max
est votre max etmin
est votre minimum. Ce n'est pas très efficace car peut prendre beaucoup de tours si votre portée est trop petit. Aussi, cela ne fonctionnera pas pour les nombres plus grands que 32767.Disons que vous voulez un numéro de 1 à 5; vous pouvez utiliser les éléments suivants:
Ou vous pouvez utiliser :~1,1 au lieu de :~-1,1. L' :~-1,1 n'est pas nécessaire, mais il réduit considérablement la quantité de temps qu'il faut pour atteindre la bonne plage. Disons que vous voulez un nombre de 1 à 50, nous avons besoin de décider entre les 2 chiffres et 1 chiffre. Utilisation:
Vous pouvez ajouter plus de cet algorithme pour décider entre les grandes plages, comme 1-1000.
goto
quand vous pouvez avoir un seul doublures, comme ci-dessus? D'autres solutions vous permettent de spécifier explicitement la gamme. Quel est l'avantage de votre code?simplifié avec plusieurs instructions if et beaucoup de ((()))
Et juste pour être complètement aléatoire pour ceux qui ne veulent toujours un écran noir.
Cela va changer de couleur de l'écran à la fois de manière aléatoire.
Si vous divisez par certains de grande valeur, vous obtiendrez une énorme quantité de doublons, l'un après l'autre.
Ce que vous devez faire est de prendre le modulo de l' %RANDOM% valeur:
voici un exemple que j'ai créé pour vous, il doit afficher une boîte de dialogue vous demandant de sélectionner un numéro de 1 à 10, en fonction du nombre que vous choisissez, il va générer un nombre aléatoire exemple d'un fichier de commandes que vous avez nommé. Si vous sélectionnez "1", alors vous obtiendrez un hasard 1 chiffres exemple. si vous sélectionnez "10" ensuite, vous recevrez de façon aléatoire un numéro à 10 chiffres exemple.
maintenant avec toutes les couleurs de l'dos arc-en-ciel
Et juste pour être complètement aléatoire, un manque total de la commande:
SET /A V=%random% %%15 +1