Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Résolu] Automatiser un changement de DNS (W7)
Auteur Message
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Bonjour à tous, j'ai besoin d'un code qui effectue en un simple clic, un changement de DNS.
A savoir plus précisément :
1.mettre une adresse primaire et une secondaire en ipv4.
2.lorsque je reclic dessus, que l'ipv4 repasse en DNS auto.
3.J'aimerais aussi que l’icône que j'utilise en raccourci, m'indique s'il est actif ou non.

Jusque là, j'ai réussi à faire un batch qui fait à peu près ces trois points correctement.
C'est à dire que le batch fonctionne nikel lorsqu'il est lancé depuis son dossier.
Mais si je le lance depuis un raccourci, sur le bureau ou dans un dock, le batch se met en boucle pour une raison qui m'échappe.
Je ne peux pas arrêter cette boucle, sauf en feintant d'arrêter ou de redémarrer le système.

De plus je n'ai pas l'impression que remplacer l'icone soit la solution la plus optimale pour l'indication d'activité du DNS.

Je m'excuse d'avance si c'est "sale" Embarassed

Merci d'avance pour votre aide / vos suggestions.

fichier principal - SwitchDNS.bat (son boulot est de choisir la suite des opérations) :
Code:

@echo
::%~dp0
::find /c "string" file
find /c "DNS_is_ON" DNS.txt

if %errorlevel% equ 1 goto notfound

:found
echo found
"DNS_OFF.bat"
timeout /t 8 /nobreak
GOTO:EOF

:notfound
echo notfound
"DNS_ON.bat"
timeout /t 8 /nobreak
GOTO:EOF


fichier DNS_ON.bat (son boulot est d'ajouter un DNS primaire et un secondaire avec les privilèges admin) :
Code:

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
   timeout /t 8 /nobreak
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
netsh interface ipv4 set dnsserver "Connexion au r‚seau local" source=static addr=178.32.122.65 primary
netsh interface ipv4 add dnsserver "Connexion au r‚seau local" addr=37.59.72.228 index=2
ipconfig /flushdns
"DNS_ON2.bat"
timeout /t 8 /nobreak


fichier DNS_ON2.bat (son boulot est qu'une fois les DNS ajoutés, il crée un txt pour la sélection du prochain run et remplace l'icône) :
Code:

setlocal
echo DNS_is_ON> DNS.txt
copy /y Off.png DNS.png
timeout /t 8 /nobreak


fichier DNS_OFF.bat (son boulot est de repasser en DNS automatique avec les privilèges admin) :
Code:

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
   timeout /t 8 /nobreak
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
netsh interface ipv4 set dnsserver "Connexion au r‚seau local" dhcp
ipconfig /flushdns
"DNS_OFF2.bat"
timeout /t 8 /nobreak


fichier DNS_OFF2.bat (son boulot est qu'une fois les DNS ajoutés, il crée un txt pour la sélection du prochain run et remplace l'icône) :
Code:

setlocal
echo DNS_is_OFF> DNS.txt
copy /y On.png DNS.png
timeout /t 8 /nobreak




Dernière édition par Torrentula le Dim 9 Aoû 2015 - 23:44; édité 2 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Même une petite piste ?



Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Bonjour, pour ton problème avec les raccourcis, vérifie que "Démarrer dans" correspond au même dossier que "Cible"




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Merci TSnake41, en lisant ta réponse je me suis dit que c'était sûrement ça mais non, la cible est bien indiquée.

Par contre j'avais cru comprendre que les programmes dos n'aiment pas trop les chemins avec des caractères spéciaux, c'est pas trop son délire.

Je viens de tester et magiquement, si je place mon dossier comprenant mes batch dans le disque système C: ça fonctionne sans loop. Problème à moitié résolu !

Le chemin du dossier ou se trouvent les batch et où la boucle infinie se produit se présente comme suit :
"E:\Program Files (x86)\_Batch\SwitchDNS" (ce n'est pas un program files windows, les raccourcis PROGRA~1 ne fonctionnent pas)

Y a t-il une solution de contournement pour que je puisse garder ce dossier ?



Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
si tu essayais de changer les:

"DNS_***.bat"

par:
Code:
call "DNS_***.bat"

ou sinon
Code:
start /B "%CD%\DNS_***.bat" ""





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Alors toutes mes excuses, en fait le raccourci ne boucle uniquement qu'avec un raccourci dans mon dock. Ca reste ennuyeux puisque c'est là que je le voudrais.
Du coup pour le raccourci bureau ça marche aussi bien avec le call que sans, par contre pas de résultat avec start /B "%CD%\DNS_***.bat"
J'ai aussi tenté en ajouté le chemin start /B "E:\Program Files (x86)\_Batch\SwitchDNS\DNS_***.bat" sans succès.



Dans l'image jointe, le screen du haut montre la boucle, celui du bas, le switch qui fonctionne.



Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
ce qui est étrange est que en haut, on est dans system32, ce qui n'est pas voulu.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Citation:
ce qui est étrange est que en haut, on est dans system32, ce qui n'est pas voulu.

En fait si, quand on exécute en admin, le dossier %CD% va dans system32 pour avoir les privilèges Okay donc si c'est pas voulu, un petit
Code:
CD "E:\Program Files (x86)\_Batch\SwitchDNS"

S'impose au début du code Wink




______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Skywalker a écrit:
Citation:
ce qui est étrange est que en haut, on est dans system32, ce qui n'est pas voulu.

En fait si, quand on exécute en admin, le dossier %CD% va dans system32 pour avoir les privilèges Okay donc si c'est pas voulu, un petit
Code:
CD "E:\Program Files (x86)\_Batch\SwitchDNS"

S'impose au début du code Wink


Sinon, on peut très bien mettre au début:
Code:
echo %CD%>%temp%\cd.txt


et a la place de ton cd:
Code:
cd<%temp%\cd.txt





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Dois-je insérer ça uniquement dans les batch demandant l'accès admin où dans tous ?



Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Torrentula a écrit:
Dois-je insérer ça uniquement dans les batch demandant l'accès admin où dans tous ?


L' echo, tu le met avant le check de l'admin.
et le cd apres.




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
J'ai tenté ça sur mes deux batch qui demandent l'accès admin DNS_OFF.bat et DNS_ON.bat (ici le DNS_OFF.bat):

Code:

echo %CD%>%temp%\cd.txt
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
   timeout /t 8 /nobreak
    exit /B

:gotAdmin
    pushd "cd<%temp%\cd.txt"
    CD /D "%~dp0"
:--------------------------------------
netsh interface ipv4 set dnsserver "Connexion au r‚seau local" dhcp
ipconfig /flushdns
call "DNS_OFF2.bat"
timeout /t 8 /nobreak


et j'ai toujours la boucle Neutral
corriges-moi si je me trompes mais le echo %CD%>%temp%\cd.txt envoie le chemin dans un txt, mais si c'est dans le dossier system32 il ne peut pas y écrire.


Skywalker, j'ai tenté avec le chemin comme préconisé, sur les mêmes fichiers (ici le DNS_OFF.bat) :

Code:

CD "E:\Program Files (x86)\_Batch\SwitchDNS"
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
   timeout /t 8 /nobreak
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
netsh interface ipv4 set dnsserver "Connexion au r‚seau local" dhcp
ipconfig /flushdns
call "DNS_OFF2.bat"
timeout /t 8 /nobreak

et j'ai également toujours la boucle Sad

désolé, je découvre le batch...



Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
En fait met le CD comme ça :
Et exécute le en admin, car dans le code ça le demande. J'ai modifié la façon de savoir si c'est exécute, celle ci est plus compréhensible ^^

Code:

@echo off
:: BatchGotAdmin
:-------------------------------------

REM --> If error flag set, we do not have admin.

net session >nul 2>nul
if %errorlevel% NEQ 0 (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    CD "E:\Program Files (x86)\_Batch\SwitchDNS"
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
   timeout /t 8 /nobreak
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
netsh interface ipv4 set dnsserver "Connexion au r‚seau local" dhcp
ipconfig /flushdns
call "DNS_OFF2.bat"
timeout /t 8 /nobreak





______________________________________________________
Visiter le site web du posteur
Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Super top, ça fonctionne, même sans lancer en admin.
Reste à voir comment je peux voir le changement d'icône en live sur mon dock...
Ça à l'air chaud, pour une icône du bureau on peut "ie4uinit.exe -ClearIconCache" mais pour le dock, aucune idée.

En tout cas un grand merci Skywalker & TSnake41 Okay



Répondre en citant
Message [Résolu] Automatiser un changement de DNS (W7) 
Ah là franchement je sais pas du tout ^^ désolé
Merci et @++ Okay




______________________________________________________
Visiter le site web du posteur
Message [Résolu] Automatiser un changement de DNS (W7) 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch