Changer son adresse IP par script ou batch (XP, Vista) Partie 3

Publié le 14 août 2009
Classé dans réseau | 9 commentaires

Si vous ne les avez pas lu, il serait bien de lire d’abord les deux premières parties :
Première Partie
Deuxième Partie

Pour commencer, si vous ne savez pas créer un fichier batch voici la méthode la plus simple :

Aller sur le bureau de votre ordinateur ou dans un répertoire quelconque, faites un clique-droit puis « Nouveau »-> »Document texte ». Donnez le nom que vous souhaitez et changez l’extension « .txt » en « .bat ». Validez avec « Entrée », validez la fenêtre qui vous demande de confirmer le changement de type de fichier.  Votre fichier est crée et pour l’éditer il suffit d’utiliser le bloc note Windows ou faire un clique-droit sur le fichier et « Modifier ».

Pour créer et éditer des fichier batch je vous conseille vivement d’utiliser le logiciel « PowerBatch » qui est disponible dans la rubrique Logiciels. Ce logiciel est très convivial et intuitif, vous ne pourrez plus vous en passer.

Nous allons donc copier les lignes de code suivantes directement dans le bloc note ou PowerBatch, on sauvegarde et on lance le fichier .bat (Attention sous Windows Vista il faut lancer le fichier en tant qu’administrateur via un clique-droit sur le fichier) et on admire le résultat :

netsh interface IP set address « Connexion au réseau local » static 192.168.10.100 255.255.255.0 192.168.10.1 1

netsh interface IP set DNS « Connexion au réseau local » static 208.67.222.222 primary

netsh interface IP add DNS « Connexion au réseau local » 208.67.220.220 index=2


netsh2

Le fichier ne fonctionne pas!

La faute à qui?

Aux tables de caractères! Le problème est dû à l’encodage des caractères dans le fichier, en effet celui-ci n’est pas compatible à 100% avec la table de caractères ANSI utilisé en mode DOS.

Regardez attentivement le screenshot vous verrez que dans le mot « réseau » le « é » n’est pas interprété  correctement.

Pour cela il convient de modifier manuellement le caractère dans le bloc note en le remplaçant par le caractère « ‚ ».

Vous trouvez que ce caractère ressemble à une virgule? Et bien en fait pas tout à fait cela y ressemble mais ce n’est pas le même caractère, pour le savoir et éviter de vous tromper, je vous recommande d’utiliser PowerBatch qui transforme de manière automatique les caractères spéciaux en caractères compatibles avec le langage DOS.

Pour cela il suffit d’aller dans l’onglet « Programme » et de cocher « Remplacer automatiquement les caractères spéciaux ».

Dans PowerBatch vous recopiez ensuite les lignes de commandes, vous sauvegardez votre fichier et vous pouvez le lancer.

Cette fois-ci ô miracle tout fonctionne.

En cas de problème vous pouvez télécharger le fichier batch ici : batch_netsh_simple

La partie suivante va vous présenter rapidement une utilité du batch.

Nous allons faire un petit gestionnaire de configuration IP.

Attention pour Windows Vista les fichiers batch touchant au système doivent être lancés en tant qu’Administrateur par un clique-droit sur le fichier.

Cet article n’étant pas un cours sur le batch (dans un prochain article), il serait trop long de vous expliquer l’intégralité du code suivant.

—————————————————————————————-

A copier directement dans PowerBatch :

::

:: Batch fourni par http://www.Admin-Network.fr

:: Ce code est la propriété exclusive de Admin-Network.fr

:: Si vous souhaiter exploiter ce batch à des fins commerciales : web2009(at)admin-network(point)fr

:: La courtoisie voudrait que vous laissiez ce commentaire, il est non visible pendant l’utilisation du script.

::

@echo off

:: Efface l’écran

cls

:: Ajoute un titre à la fenêtre

title [Admin-Network.fr IP Configurator]

:: Définit la largeur et la hauteur de la fenêtre

@mode con: cols=70 lines=20

:: Définit une variable pour l’adresse IP, permet de déployer le batch sur plusieurs postes sans conflits IP

set poste=100

:top

:: Tableau graphique

echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»

ECHO º             — Configuration de l’IP R‚seau —     Poste : %poste% º

ECHO º               -=Copyright Admin-Network.fr =-                  º

ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

echo ³  1 === Site 1                 ³ 2 === Site 2                   ³

ECHO ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

echo ³  3 === Site 3                 ³ 4 === Site 4                   ³

ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

::Demande à l’utilisateur son choix

set var=

set /p var=quel est votre choix ?

if ‘%var%’==’1’  goto site1

if ‘%var%’==’2’  goto site2

if ‘%var%’==’3’  goto site3

if ‘%var%’==’4’  goto site4

echo Le choix %var% n’est pas valide.

echo.

goto top

:: Configuration si le site 1 à été choisi

:site1

:: Efface la fenêtre

cls

:: Affiche un petit message pour confirmer le changement

echo.

echo Veuillez patienter…

echo.

::configure la carte réseau

netsh interface ip set address « Connexion au r‚seau local » static 192.168.10.%poste% 255.255.255.0 192.168.10.1 1

netsh interface ip set dns « Connexion au r‚seau local » static 208.67.222.222

netsh interface ip add dns « Connexion au r‚seau local » 208.67.220.220 index=2

::va à la fin du batch

GOTO FIN

:: Configuration si le site 2 à été choisi

:site2

:: Efface la fenêtre

cls

:: Affiche un petit message pour confirmer le changement

echo.

echo Veuillez patienter…

echo.

::configure la carte réseau

netsh interface ip set address « Connexion au r‚seau local » static 192.168.11.%poste% 255.255.255.0 192.168.11.1 1

netsh interface ip set dns « Connexion au r‚seau local » static 208.67.222.222

netsh interface ip add dns « Connexion au r‚seau local » 208.67.220.220 index=2

::va à la fin du batch

GOTO FIN

:: Configuration si le site 3 à été choisi

:site3

:: Efface la fenêtre

cls

:: Affiche un petit message pour confirmer le changement

echo.

echo Veuillez patienter…

echo.

::configure la carte réseau

netsh interface ip set address « Connexion au r‚seau local » static 192.168.12.%poste% 255.255.255.0 192.168.12.1 1

netsh interface ip set dns « Connexion au r‚seau local » static 208.67.222.222

netsh interface ip add dns « Connexion au r‚seau local » 208.67.220.220 index=2

::va à la fin du batch

GOTO FIN

:: Configuration si le site 4 à été choisi

:site4

:: Efface la fenêtre

cls

:: Affiche un petit message pour confirmer le changement

echo.

echo Veuillez patienter…

echo.

::configure la carte réseau

netsh interface ip set address « Connexion au r‚seau local » static 192.168.13.%poste% 255.255.255.0 192.168.13.1 1

netsh interface ip set dns « Connexion au r‚seau local » static 208.67.222.222

netsh interface ip add dns « Connexion au r‚seau local » 208.67.220.220 index=2

::va à la fin du batch

GOTO FIN

:FIN

@exit

—————————————————————————————-

Un fichier tout prêt est disponible en téléchargement ici : Batch_netsh_gestionnaire_IP

Il faut bien évidement modifier les données du batch afin de convenir à vos besoins. Notamment les adresses IP, passerelles et DNS et pour des raisons de simplicité les noms des sites dans le tableau.

Pour rajouter des sites il suffit de dupliquer les zones dans le batch, il n’y pas de limites dans les nombre de sites gérables.

Vous savez désormais à peu près tout sur la commande netsh et les cartes réseaux en ligne de commande.

J’espère que ces trois parties vous auront satisfaites.

Commentaires

9 commentaires sur “Changer son adresse IP par script ou batch (XP, Vista) Partie 3”

  1. etienne on 3 novembre 2011 20 h 08 min

    Bonjour.
    Beau boulot!

    Et pour ce qui est de « Connexion réseau sans fil » qu’elle est la syntaxe.
    Chez moi, ça ne fonctionne pas.

    Qu’elle est la syntaxe pour le DHCP ?

    Merci!

  2. Chris... on 2 décembre 2011 0 h 29 min

    Bonjour, merci pour vos compliments, je suis désolé de vous répondre un peu tardivement, en ce qui concerne la syntaxe il faut utiliser de préférence le logiciel PowerBatch fourni sur le site afin de modifier automatiquement les caractères spéciaux (le « é » de réseau). sinon une autre solution consiste à renommer la nom de la connexion par exemple « Connexion réseau sans fil » en « Connexion reseau sans fil », l’accent disparait et les problèmes aussi.
    En ce qui concerne le DHCP voici les lignes de commandes à appliquer:

    netsh interface ip set address « Connexion au r‚seau local » source=dhcp
    netsh interface ip set dns « Connexion au r‚seau local » source=dhcp

    Attention les « , » ne sont pas des virgules mais la conversion de powerbatch du caractère « é ».

    Voilà j’espère que ma réponse ne tombe pas trop tard. Bonne soirée.

  3. Damien on 19 novembre 2012 14 h 49 min

    Bonjour,

    Merci c’est bien utile, tu nous as mâché le travail :)

    Très bien fichu ce petit script

  4. Chris... on 13 décembre 2012 11 h 08 min

    Merci pour votre retour,

    C’est très agréable d’avoir une bonne critique :) et de pouvoir fournir un travail utile.

    J’espère avoir le temps de poster des nouveautés, si vous avez des besoins particuliers n’hésitez pas à demander.

    Bonne journée.

  5. Steve on 10 mars 2014 8 h 45 min

    Tout simplement MERCI!!!!

  6. Chris... on 27 juillet 2014 10 h 25 min

    Heureux que cela rende toujours autant service :)

  7. bob on 12 février 2015 12 h 05 min

    Les années passent et ce script a toujours la classe : Merci!

  8. vnico on 9 avril 2015 15 h 52 min

    Super pratique, manquerait juste la commande pour passer en ip automatique. Un conseiller de ma boite se balade avec un pc portable : Ip auto chez nous, Ip fixe à sa permanence. (A moins que j’ai raté la commande X)

  9. Chris... on 5 mars 2016 14 h 13 min

    Bonjour, je réponds très tardivement, mais la commande pour passer en dhcp est tout simplement :
    « netsh interface IP set address « Connexion au réseau local » source=dhcp »

Laisser une réaction




IMPORTANT! Afin de valider votre commentaire, Vous devez résoudre la formule mathématique suivante (Ceci nous permet de valider que vous êtes bien humain) :-)

Combien font 8 (+) 11 ?
Please leave these two fields as-is: