aider moi pour creer ce script svp :) [Script DOS] - Divers - Programmation
Marsh Posté le 20-03-2003 à 11:31:22
il n'y a pas besoin de demander à l'utilisateur quel OS il a :
Il suffit de faire :
ver|find "Windows 95"
if not errorlevel goto Win95
ver|find "Windows 98"
if not errorlevel goto Win98
ver|find "Windows NT"
if not errorlevel goto WinNT
ver|find "Windows 2000"
if not errorlevel goto Win2k
echo Vous travaillez encore avec win 3.11 ?
pause
goto fin
:Win95
...
goto suite
:Win98
...
goto suite
etc. etc.
A+
Marsh Posté le 20-03-2003 à 11:38:43
pour le fichier hosts, moi je copierais brutalement un fichier modèle situé sur le serveur sans chercher à rajouter des lignes à la main, ce qui obligerait à vérifier dans le script si ces lignes existent pour ne pas les retrouver en double, triple,...etc.
Marsh Posté le 20-03-2003 à 12:02:02
Le problème c'est qu'il s'agit d'un cas assez particulier...
en fait les utilisateurs sont des clients qui ne sont pas dans l'entreprise et des utilisateurs novices qui plus est...C'est pour accéder à un extranet via un logiciel vpn.
Les procédures actuelles sont de leur donner les manip par tel. le prob c'est que ce sont pas trpo des flèches question pc d'ou l'utilité de garder un scénario proche de celui que j'ai cité et donc l'impossibilité de stocker le hosts sur un serveur (ce qui aurait été bcp plus simple )
Marsh Posté le 20-03-2003 à 12:21:04
Déjà tes utilisateurs novices n'auront pas à se demander quel est l'OS...
Pour le hosts je reprendrai la discussion cet après-midi
A+
Marsh Posté le 20-03-2003 à 13:43:09
je reprends le cours de la discussion :
Si tes users ont un fichier hosts existant, le contenu de celui-ci doit-il être conservé ?
si NON :
tu crée ton nouveau fichier hosts par une suite de commande :
echo 192.168.0.20 www.toto.com >c:\chemin\hosts
echo 192.168.0.21 www.titi.com >>c:\chemin\hosts
etc.
si OUI :
il faut éviter de créer plusieurs fois la même ligne. Ce qui donne:
find "192.168.0.20 www.toto.com" c:\chemin\hosts
if not errorlevel goto suite1
echo 192.168.0.20 www.toto.com >>c:\chemin\hosts
:suite1
find "192.168.0.21 www.titi.com" c:\chemin\hosts
if not errorlevel goto suite2
echo 192.168.0.21 www.titi.com >>c:\chemin\hosts
:suite2
Problème :
si une adresse de site change, tu auras les 2 entrées dans le hosts... et je ne sais pas si c'est la première ou la dernière qui compte...
Reposte si tu veux des précisions.
A+
Marsh Posté le 20-03-2003 à 14:14:10
Donc en gros celà doit donner qque chose dans le genre :
echo on
ver|find "Windows 95"
if not errorlevel goto Win95
ver|find "Windows 98"
if not errorlevel goto Win98
ver|find "Windows NT"
if not errorlevel goto WinNT
ver|find "Windows 2000"
if not errorlevel goto Win2k
echo Vous travaillez encore avec win 3.11 ?
pause
jusque là je pige
la dernière étape (oui le hosts existant doit etre remplacé) :
echo 192.168.0.20 www.toto.com >c:\chemin\hosts
echo 192.168.0.21 www.titi.com >>c:\chemin\hosts
etc.
je pige aussi
mais j'arrive pas à voir la syntax pour effectuer la jonction entre les deux....
quelle commande indiquer pour faire en gros :
par exemple dans le cas d'un win95 :
ver|find "Windows 95"
if not errorlevel goto Win95
blablablblala
.....
.....
:win95
echo 192.168.0.20 www.toto.com >c:\windows\hosts
echo 192.168.0.21 www.titi.com >c:\windows\hosts
est-ce corect ?
par contre dans la syntax que tu m'a décris je ne pige pas le goto fin que tu indiques après la vérification du système...?
En tout cas les informations que m'a indiqué m'aide bcp, je commence à m'y metre tout de suite !
Marsh Posté le 20-03-2003 à 14:45:22
Je viens de tester, il ne reconnait pas la commande :
if not errorlevel goto Win95
et chose interessante il commence à creer le host mais en prenant compte uniquement de la dernière adresse indiquée...
je peux pex etre creer un script par système ca contournerai le problème...
mais ca n'explique pas pourquoi il ne prend en compte que la dernière adresse
Marsh Posté le 20-03-2003 à 15:22:44
pour creer le host c'est réglé.
il me manque uniquement une syntaxe correcte pour la première parti du script -> à asvoir pour la détection de l'os...
peux-tu m'éclairer là dessus stp
Marsh Posté le 20-03-2003 à 16:15:32
errorlevel :
la commande exacte est :
if not errorlevel 1 got xxx
(j'avais oublié le 1) désolé
pour le hosts je pense que tu as vu que quand tu fais :
echo 192.168.0.20 www.toto.com >c:\chemin\hosts
tu crée un nouveau fichier
et quand tu fais :
echo 192.168.0.20 www.toto.com >>c:\chemin\hosts
tu ajoutes le texte à la fin du fichier
Si l'anglais ne te rebutes pas tu peux aller voir ce site génial :
http://www.robvanderwoude.com/index.html
rubrique batch files.
A+
Marsh Posté le 20-03-2003 à 16:42:31
De mon coté j'ai créé ça :
@ECHO OFF
ebut
ECHO.
ECHO Menu de demarrage:
ECHO 1) Windows 95
ECHO 2) Windows 98
ECHO 3) Windows NT4
ECHO 4) Windows 2000
ECHO 5) Windows XP
ECHO.
Choice /c:12345 /n
If errorlevel 5 GOTO WinXP
If errorlevel 4 GOTO Win2000
If errorlevel 3 GOTO WinNT
If errorlevel 2 GOTO Win98
If errorlevel 1 GOTO Win95
Le prob c'ets qu'il me marque des messages d'erreurs comme quoi il n'arrive pas à creer des fichiers !!arfff
Marsh Posté le 20-03-2003 à 17:23:17
Je dois m'en aller, donc je réponds vite :
Je te déconseille d'utiliser choice qui n'existe pas en standard sous NT et 2000 (Xp, je sais pas). Il est dispo uniquement avec le kit de ressources techniques.
La solution que je te propose pour tester l'OS me semble bien préférable.
A demain pour de nouvelles aventures.
Jean-Pierre
Marsh Posté le 21-03-2003 à 10:15:18
J'ai essayé avec ta méthode et le truc c'est que'il me crée 3 fois les mêmes adresses dans le hosts.
Et ya un prob sur lé vérification du système.
La vérification se fait vis à vis de quoi ? vis à vis du nom qui se trouve dans les propriétés du poste de travail ? ou il check un autre endroit ?
Marsh Posté le 21-03-2003 à 10:19:51
poste ton script que je regarde ou envoie le moi par mail s'il est trop long
A+
Marsh Posté le 21-03-2003 à 10:22:32
Je continue mes test (sous du 95 hic!)
apparemment il ne diférencie pas les check des versions de windows, il me faudrait la synstaxe exacte des noms systèmes et de la commande car pour le moment sur 95, il m'installe le bloc de commande pour 95 ET 98 et les autres commandes sont en erreurs vue que les dossiers n'existent pas mais ca prouve qu'il tente de les creer et donc que la vérification d'os ne fonctionne pas
Si tu peux me donner un dernier coup de main pour finaliser ça ca serait super sympa, je suis proche du but
Marsh Posté le 21-03-2003 à 10:27:15
Envoie ton script...
je parie que tu as oublié des goto suite après les exécutions des instructions spécifiques à chaque OS...
JP
Marsh Posté le 21-03-2003 à 10:33:39
Echo on
ver|find "Windows 95"
if not errorlevel 1 goto Win95
ver|find "Windows 98"
if not errorlevel 1 goto Win98
ver|find "Windows NT"
if not errorlevel 1 goto WinNT
ver|find "Windows 2000"
if not errorlevel 1 goto Win2k
ver|find "Windows XP"
if not errorlevel 1 goto WinXP
:Win95
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
:Win98
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
:WinNT
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
:Win2k
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
:WinXP
echo 127.0.0.1 localhost >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\system32\drivers\etc\hosts
PAUSE
EXIT
Voilà en gros....
Et faut que je me renseigne sur le chemin du host sur du windows xp home mais ça c'est du détail...
Marsh Posté le 21-03-2003 à 10:36:02
Tu as effectivement oublié des goto :
LOLYLO a écrit : Echo on |
celà devrait déjà mieux fonctionner
A+
Marsh Posté le 21-03-2003 à 11:02:54
effectivement ya du mieux
Echo on
ver|find "Windows 95"
if not errorlevel 1 goto Win95
ver|find "Windows 98"
if not errorlevel 1 goto Win98
ver|find "Windows NT"
if not errorlevel 1 goto WinNT
ver|find "Windows 2000"
if not errorlevel 1 goto Win2k
ver|find "Windows XP"
if not errorlevel 1 goto WinXP
goto fin
:Win95
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
goto suite
:Win98
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
goto suite
:WinNT
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
goto suite
:Win2k
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
goto suite
:WinXP
echo 127.0.0.1 localhost >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\system32\drivers\etc\hosts
PAUSE
EXIT
hmm à la fin du script il me dit :
goto suite
Etiquette introuvable
Il me semble que j'ai loupé une étape....
Par contre je pige toujours pas comment fonctionne la détection des OS...
Marsh Posté le 21-03-2003 à 11:36:06
Etiquette introuvable :
tu as oublié l'étiquette :suite juste avant PAUSE
Comment fonctionne la détection de l'os :
Quand tu tapes la commande ver (Version) tu obtiens (sur mon win 2k) :
Microsoft Windows 2000 [Version 5.00.2195]
le caractère | permet de rediriger la sortie d'une commande vers une autre commande. Ici find.
Si find trouve la chaîne, il l'affiche et errorlevel est fixé à 0
sinon il n'affiche rien et errorlevel est fixé à 1
la commande if (voir if /?)
p:\>if /?
Lance l'exécution conditionnelle dans un programme de commandes.
IF [NOT] ERRORLEVEL nombre commande
IF [NOT] chaîne1==chaîne2 commande
IF [NOT] EXIST nom_de_fichier commande
NOT Indique que Windows 2000 n'effectue la commande que si
la condition est fausse.
ERRORLEVEL nombre Condition vraie si le dernier programme exécuté a
retourné un code sortie supérieur/égal au nombre donné.
commande Spécifie la commande à exécuter si la condition est
satisfaite.
A+
Marsh Posté le 21-03-2003 à 12:25:48
Ok c'était ça arf
je n'utilise jamais cette commande ver
Tu saurais pas par hasard si sur un xp home, la valeur string est "Windows XP Home" ou autre chose ?
J'ai pas moyen de tester ça on a pas de xp home ici et pas question de prendre un client comme cobaye lol )
Marsh Posté le 21-03-2003 à 12:44:52
Ca marche c'est super !!!!! ))
Je te remercie 1000 fois
Tant que l'on y est tu peux pas me filer un coup de main pour le second script ?
principe :
détecter si le fichier hosts est présent si oui alors test de ping sur une des adresses indiquées
sinon un message s'affiche comme quoi le fichier n'est pas au bon endroit.
Par contre je sais pas si c'est possible, mais j'avais dans l'idée de faire une recherche sur une adresse ip à l'intérieur du hosts en même temps pour voir s'il s'agit bien du bon hosts...mais bon je là je vois pas comment....
Si tu peux m'aider sur ce second cas je t'en serait très reconnaissant sinon merci pour tout ce que tu as déjà fait
Marsh Posté le 21-03-2003 à 13:48:49
pour XP :
Je n'ai pas de XP home ici (que des Pro), vu qu'on se connecte à un domaine. Il faudrait savoir quelle est la différence pour pouvoir faire le test :
réponse à la commande ver
présence ou nom d'un fichier spécifique
...
pour détecter si le fichier hosts est présent :
if exist c:\dossier\hosts commande
par contre pour tester si c'est le bon, plutôt que de faire un ping d'une des adresses, pourquoi ne pas faire un find de "192.168.0.20 www.toto.com" dans le fichier hosts.
Tu choisirais de tezter dans le script la dernière adresse modifiée :
find "192.168.0.20 www.toto.com" c:\dossier\hosts
if not errorlevel 1 goto hostsOK
rem commandes si hosts n'est pas bon
...
...
goto suite2
:hostsOK
...
A+
Marsh Posté le 21-03-2003 à 23:39:41
C'est bon j'y suis arrivé grpace à ton aiguillage
je te remercie vivement pour ce sacré coup de main
Marsh Posté le 24-03-2003 à 09:02:07
De rien. C'était presque facile pour un vieux fossile du DOS comme moi...
Si tu dois encore faire des scripts batch, je te conseille ce site, en anglais bien sur :
http://www.robvanderwoude.com/index.html
A+
Marsh Posté le 20-03-2003 à 11:14:11
Hello world
Voilà j'ai un script à creer pour ma boite et j'ai du mal à le réaliser (pas trop mon truc).
pouvez-vous me donner un coup de main ?
voilà la finalité :
un fichier hosts.bat
au lancement il devra proposer le choix suivant et l'utilisateur devra choisir une des 4 propositions :
Quel OS avez-vous ?
1 win95 ou 98
2 win nt
3 win 2000
4 win xp
en fonction du choix le fichier le script va chercher si le fichier hosts existe sur le système en question, si oui le script devra lui ajouter un série d'adresse ip (locales) avec alias prédéfinie.Dans l cas contraire le script devra creer un fichier hosts avec les adresse ip en question et le placer au bon endroit.
pour ce cas on prendra comme exemple :
192.168.0.20 www.toto.com
192.168.0.21 www.titi.com
...
Et pour finir : un second script verif.bat qui va :
rechercher le fichiers hosts en renvoyer la réponse à l'utilisateur (ex: "les adresses ip ne sont pas indiqué", "le fichier hosts n'est pas au bon endroits" etc...)
puis un test de ping mais ça ca reste la partie la plus simple lol
Merci à tous ceux qui pourront me fournir de l'aide qui me sera bien précieuse