Problème de programmation Notepad++
Ronin
-
Ronin -
Ronin -
Bonjour,
J'aimerai un coup de pouce pour me débloquer. J'ai un fichier .bat qui génère aléatoirement des adresses ip et masque de sous-réseau associé à cette adresse ip, j'aimerai savoir comment je peux faire en sorte d'éviter les doublons dans les octets, je précise que je travail avec Notepad++. Merci
J'aimerai un coup de pouce pour me débloquer. J'ai un fichier .bat qui génère aléatoirement des adresses ip et masque de sous-réseau associé à cette adresse ip, j'aimerai savoir comment je peux faire en sorte d'éviter les doublons dans les octets, je précise que je travail avec Notepad++. Merci
A voir également:
- Problème de programmation Notepad++
- Telecharger notepad++ - Télécharger - Édition & Programmation
- Finale notepad - Télécharger - Outils professionnels
- Application de programmation - Guide
- Network notepad - Télécharger - Dessin & Illustration
- Notepad++ mode sombre ✓ - Forum Programmation
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
moi j'essaierais d'adapter le fichier .bat
moi j'essaierais d'adapter le fichier .bat
@echo off
REM DEBUT DU PROGRAMME
:start
REM CLEAR SCREEN
cls
REM PREMIER OCTET
:A
set /a A=%random%
if %A% GTR 49 goto A
REM DEUXIEME OCTET
:B
set /a B=%random%
if %B% GTR 49 goto B
REM TROISEME OCTET
:C
set /a C=%random%
if %C% GTR 49 goto C
REM QUATRIEME OCTET
:D
set /a D=%random%
if %D% GTR 49 goto D
REM CINQUIEME OCTET
:E
set /a E=%random%
if %E% GTR 49 goto E
REM DEFINITION DE LA CLASSE
if %A% LEQ 10 goto NMA
REM NETMASK CLASSE A
:NMA
set /a NM=%random%
if %NM% LSS 1 goto NMA
if %NM% GTR 10 goto NMA
goto result
REM RESULTAT
:result
echo %A%.%B%.%C%.%D%.%E%/%NM%
pause > nul
REM REDEMARRAGE DU PROGRAMME
goto start
REM DEBUT DU PROGRAMME
:start
REM CLEAR SCREEN
cls
REM PREMIER OCTET
:A
set /a A=%random%
if %A% GTR 49 goto A
REM DEUXIEME OCTET
:B
set /a B=%random%
if %B% GTR 49 goto B
REM TROISEME OCTET
:C
set /a C=%random%
if %C% GTR 49 goto C
REM QUATRIEME OCTET
:D
set /a D=%random%
if %D% GTR 49 goto D
REM CINQUIEME OCTET
:E
set /a E=%random%
if %E% GTR 49 goto E
REM DEFINITION DE LA CLASSE
if %A% LEQ 10 goto NMA
REM NETMASK CLASSE A
:NMA
set /a NM=%random%
if %NM% LSS 1 goto NMA
if %NM% GTR 10 goto NMA
goto result
REM RESULTAT
:result
echo %A%.%B%.%C%.%D%.%E%/%NM%
pause > nul
REM REDEMARRAGE DU PROGRAMME
goto start
Bonjour,
Tu utilises %RANDOM% sans lui définir un nombre mini et maxi, donc ton script passe son temps à générer des nombres inutiles, puisque en dehors de la fourchette utile.
Apparemment la commande %RANDOM% se base sur l'heure système pour générer ses nombres, donc pour ne pas se retrouver avec à chaque fois les mêmes nombres générés je suggère d'instaurer une temporisation d'une seconde entre chaque génération.
En modifiant légèrement ton script, voilà ce que ça donnerait :
Tu utilises %RANDOM% sans lui définir un nombre mini et maxi, donc ton script passe son temps à générer des nombres inutiles, puisque en dehors de la fourchette utile.
Apparemment la commande %RANDOM% se base sur l'heure système pour générer ses nombres, donc pour ne pas se retrouver avec à chaque fois les mêmes nombres générés je suggère d'instaurer une temporisation d'une seconde entre chaque génération.
En modifiant légèrement ton script, voilà ce que ça donnerait :
@echo off setlocal enableextensions enabledelayedexpansion REM DEBUT DU PROGRAMME :start REM CLEAR SCREEN cls & set "address=" REM LES 5 OCTETS for /L %%A in (1,1,5) do call :generator 49 %%A REM DEFINITION DE LA CLASSE if !octet1! LEQ 10 goto NMA REM NETMASK CLASSE A :NMA timeout /t 1 /nobreak >nul set /a NM=!random! * 10 / 32768 + 1 if %NM% LSS 1 goto NMA if %NM% GTR 10 goto NMA goto result REM RESULTAT :result cls & echo. & echo Resultat = !address:~1!/%NM% echo. & pause REM REDEMARRAGE DU PROGRAMME goto start REM GENERATION D'UN NOMBRE ALEATOIRE :generator timeout /t 1 /nobreak >nul set /a octet%2=!random! * 50 / 32768 + 1 if !octet%2! GTR %1 (goto :generator) else (set "address=!address!.!octet%2!") cls & echo. & echo Adresse = !address:~1! goto :eof
Voilà tu n'auras plus de doublons :
@echo off setlocal enableextensions enabledelayedexpansion REM DEBUT DU PROGRAMME :start REM CLEAR SCREEN cls & set "address=" REM LES 5 OCTETS for /L %%A in (1,1,5) do call :generator 49 %%A REM DEFINITION DE LA CLASSE if !octet1! LEQ 10 goto NMA REM NETMASK CLASSE A :NMA timeout /t 1 /nobreak >nul set /a NM=!random! * 9 / 32768 + 1 if %NM% LSS 1 goto NMA if %NM% GTR 10 goto NMA goto result REM RESULTAT :result cls & echo. & echo Resultat = !address:~1!/%NM% echo. & pause REM REDEMARRAGE DU PROGRAMME goto start REM GENERATION D'UN NOMBRE ALEATOIRE :generator timeout /t 1 /nobreak >nul set /a octet%2=!random! * %1 / 32768 if !octet%2! GTR %1 (goto :generator) echo !address! | findstr "\<!octet%2!\>" >nul && goto :generator || set "address=!address!.!octet%2!" cls & echo. & echo Adresse = !address:~1! goto :eof
Je pense que c'était une façon subtile de te dire que sans voir le code il nous est impossible de te répondre...
:-)