@Echo Off Cls :: ConfigIP-xxx.cmd - Cr้er par Tlem le 20/02/2016 :: ConfigIP est un Batch qui permet de configurer automatiquement :: les param่tres de la carte r้seau d้sign้e par son identifiant. :: Batch test้ sous Windows Vista, 7, 8.x et 10 :: :: 14/01/2017 : Correction d'un bogue sur le DHCP et ajout du CIDR dans le nom de l'interface. :: :: 14/07/2017 : Correction du passage de l'espace เ la variable :: %Space% qui parfois ้tait perdu !!! :: Modification de l'affichage et du choix des interfaces. :: Si une seule interface, alors s้lection auto. :: Modification de la partie DHCP (nom + recap). :: :: Configurez les param่tres ci-dessous ou laissez vide pour du DHCP. :: LanIdx correspond เ l'index de la carte r้seau et permet d'automatiser :: la configuration sans intrvention de l'utilisateur. :: FullAuto (1 ou 0) rends le batch tout automatique si tout est renseign้. ::======================================== :: Param่tres ::======================================== Set LanIdx= Set IP= Set Mask= Set Gateway= Set DNS1= Set DNS2= Set FullAuto= ::======================================== ::======================================== :: Demande des droits administrateur :--------------------------------------------------------------------------------------------------------------- :GetAdminRight :--------------------------------------------------------------------------------------------------------------- REM --> Contr๔le des permissions (Version 29/02/2016). >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> Si erreur, pas de droits Admin ... If '%errorlevel%' NEQ '0' ( Echo Demande des privilŠges administratifs ... Ping -n 2 127.0.0.1>NUL Goto UACPrompt ) Else ( Goto GotAdmin ) :UACPrompt Rem CHCP 1250 est utilis้ pour les machines dont le 8.3 est d้sactiv้ et pour copier les accents. CHCP 1250>NUL Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\Getadmin.vbs" Echo UAC.ShellExecute "cmd.exe","^/c" ^& """%~s0 %~s1""", "", "runas", 1 >> "%temp%\GetAdmin.vbs" Cscript //Nologo "%temp%\GetAdmin.vbs" Exit ::Exit /B 1 :GotAdmin If Exist "%temp%\GetAdmin.vbs" (Del "%temp%\GetAdmin.vbs") Pushd "%CD%" CD /D "%~dp0" :--------------------------------------------------------------------------------------------------------------- :--------------------------------------------------------------------------------------------------------------- :: Attribution de quelques variables afin d'้viter des probl่mes SetLocal EnableDelayedExpansion If /I "%IP%"=="" ( Set IP=DHCP Set Mask=DHCP Set Gateway=DHCP Set DNS1=DHCP Set DNS2=DHCP Set NewAdapterName=LAN-DHCP ) else ( If "%Mask%"=="" Set Mask=255.255.255.0 Call :Mask2CIDR %Mask% Set NewAdapterName=%IP%!CIDR! ) :: Si l'interface est connue on passe l'้cran du choix de l'interface If Not "%LanIdx%"=="" Goto :GetInterfaceName :: Affichage de la liste des interfaces reseau. Echo ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป Echo บ Liste des interfaces r‚seau disponibles : บ Echo ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ For /F "Skip=3 Tokens=1,4,5* Delims= " %%a in ('netsh interface ipv4 show interface^|findstr /I /V /C:"Loopback"') Do ( Set /A Count+=1 Echo Index = %%a Nom = %%c Etat = %%b Set LanIdx=%%a ) Echo. If "%Count%"=="1" Goto :GetInterfaceName :: Choix de l'index de l'interface. Set /p LanIdx="Veuillez entrer le num‚ro d'index de la carte a modifier : " Echo. :GetInterfaceName Set SpaceString= String with beginning space :: Recherche du nom de la carte par rapport a l'index. Setlocal EnableDelayedExpansion For /F "Tokens=1-4,5* Delims= " %%a in ('netsh interface ipv4 show interface') Do ( If %%a==%LanIdx% ( If Not "%%f"=="" Set Space=%SpaceString:~0,1% Set AdapterName=%%e!Space!%%f ) ) :: Verifie que le nom ne soit pas vide. If "%AdapterName%"=="" ( Color 0C Echo Erreur sur la r‚cup‚ration du nom de la carte Echo Appuyez sur une touche pour quitter Pause>NUL Exit ) :CheckInsterface :: V้rifie les parametres de l'interface. netsh interface ipv4 show interface "%AdapterName%">NUL If errorlevel 1 ( Color 0C Echo Le nom "%AdapterName%" ne correspond pas … une interface r‚seau valide ! Echo Appuyez sur une touche pour quitter Pause>NUL Exit ) :: Si on est en mode FullAuto, on passe la r้cap. If /I "%FullAuto%"=="1" Goto :Go :: Affichage des param่tres r้capitulatifs. Echo. Echo ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป Echo บ ParamŠtres r‚seau (en cours) : บ Echo ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ For /F "Tokens=* Delims= " %%a in ('netsh interface ipv4 show config "%AdapterName%"^|findstr /I /V "trique suffixe wins"') Do ( Echo %%a ) ::netsh interface ipv4 show config "%AdapterName%" Echo. Echo. Echo ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป Echo บ ParamŠtres r‚seau (Nouveaux) : บ Echo ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ If "%IP%"=="DHCP" ( Echo Nouveau nom de la carte r‚seau : %NewAdapterName% Echo Adresse IP : DHCP Echo Masque de sous r‚seau : DHCP Echo Adresse IP Passerelle : DHCP Echo Adresse IP DNS 1 : DHCP Echo Adresse IP DNS 2 : DHCP ) ELSE ( Echo Nouveau nom de la carte r‚seau : %NewAdapterName% Echo Adresse IP : %IP% Echo Masque de sous r‚seau : %Mask% Echo Adresse IP Passerelle : %Gateway% Echo Adresse IP DNS 1 : %DNS1% Echo Adresse IP DNS 2 : %DNS2% ) Echo. Echo. :: Validation du choix :Choice Set /p Go="Veuillez confirmer la mise en place des paramŠtres : o/n (Oui par d‚faut)" If /I "%Go%"=="" Goto :Go If /I "%Go%"=="o" Goto :Go If /I "%Go%"=="n" Exit Goto Choice :: Traitement des param่tres. :Go If /I "%IP%"=="dhcp" Goto :DHCP :: Configuration IP statique :Static netsh interface set interface name="%AdapterName%" newname="%NewAdapterName%" netsh.exe interface ipv4 set address name="%NewAdapterName%" source=static address=%IP% mask=%Mask% gateway=%Gateway% netsh interface ipv4 set dns "%NewAdapterName%" static %DNS1% netsh interface ipv4 add dns "%NewAdapterName%" %DNS2% index=2 Goto :End :: Configuration IP dynamique :DHCP netsh interface set interface name="%AdapterName%" newname="%NewAdapterName%" netsh.exe interface ipv4 set address name="%NewAdapterName%" source=dhcp netsh interface ipv4 set dns "%NewAdapterName%" dhcp :: Ecran de temporisation, le temps que les param่tres soient appliqu้s. :End Cls Echo. Echo. Echo ษอออออออออออออออออออออออออออออออออออออออออป Echo บ Mise en place des paramŠtres en cours บ Echo บ Veuillez patienter quelques instants บ Echo ศอออออออออออออออออออออออออออออออออออออออออผ Ping -n 5 127.0.0.1>NUL Cls Color 0A Echo. Echo ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป Echo บ Nouveaux paramŠtres de la carte r‚seau : บ Echo ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ Echo. Echo Nouveau nom de la carte r‚seau : %NewAdapterName% For /F "Skip=2 Tokens=* Delims= " %%a in ('netsh interface ipv4 show config "%NewAdapterName%" ^|findstr /I /V "trique suffixe wins"') Do ( Echo %%a ) Echo. Echo. Echo. :: Si on est en mode FullAuto, on ferme automatiquement la fen๊tre. If /I "%FullAuto%"=="1" ( Echo Fermeture automatique dans 8 secondes. Ping -n 8 127.0.0.1>NUL Goto Quit ) Echo Appuyez sur une touche pour quitter Pause>NUL :Quit :: Fermeture du batch Exit ::============================================================================= :: FONCTIONS ::============================================================================= :Mask2CIDR :: On r้cup่re le masque de %1 et on le d้compose en remplacant les points par un espace Set CMask=%1 Set CMask=%CMask:.= % :: Initialisation de variables Set MaskBin= Set CIDR= :: Boucle de conversion de chaque groupe d้cimeal en binaire ::SetLocal EnableDelayedExpansion FOR %%B IN (%CMask%) DO ( Call :DEC2BIN %%B Set MaskBin=!MaskBin!!ErrorLevel! ) :: Transformation du masque binaire pour traitement (en ajoutant des espace entre chaque ้l้ment) Set MaskBin=%MaskBin:1=1 % :: Boucle de comptage du nombre de 1 FOR %%B IN (%MaskBin%) DO ( If %%B==1 Set /a CIDR+=1 ) :: Transformation du CIDR pour ajout เ la chaine IP If "!CIDR!" NEQ "" Set CIDR=-!CIDR!b Goto :EOF :DEC2BIN SET NBDec=%1 SET BIN_RETURN= :: Boucle de conversion du nombre d้cimal en binaire FOR %%B IN (128,64,32,16,8, 4, 2, 1) DO ( Set /a Cbit=!NBDec!/%%B Set /a NBDec=!NBDec!%%%%B Set BIN_RETURN=!BIN_RETURN!!Cbit! ) :: On retourne dans ErrorLevel le nombre binaire Exit /B !BIN_RETURN! Goto :EOF :EOF