Pb sur un script en lignes de commande - Win NT/2K/XP - Windows & Software
Marsh Posté le 21-12-2005 à 14:58:40
nono784 a écrit : ... |
Marsh Posté le 21-12-2005 à 15:19:41
Merci, mais ça ne fonctionne pas.
De plus, a terme, il y aura plus de 10 villes, il faut donc que je les repère par des chiffres.
Quel rapport y a-t-il entre les choix (choice /c:...) et les 'errorlevel' ???
Merci
Marsh Posté le 21-12-2005 à 15:22:37
Non mais la ton script il ressemble a rien de compatible avec .bat et .cmd!
echo. pour un saut de ligne!
choice ne marche plus sous XP! maintenant c''est set /p ....
Deja ca et revient!
Marsh Posté le 21-12-2005 à 15:27:44
Exemple de choix:
set choice=
set /p choice=Taper le Numero de l'action A effectuer!!!:
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto CONFR
if '%choice%'=='2' goto PING
if '%choice%'=='3' goto MENUFTP
if '%choice%'=='4' goto PROG
if '%choice%'=='5' goto TELNET
if '%choice%'=='6' goto DOS
if '%choice%'=='7' goto DELLOGS
if '%choice%'=='8' goto EXIT
if '%choice%'=='9' goto PARAM
ECHO "%choice%" is not valid please try again
ECHO.
goto start
Marsh Posté le 21-12-2005 à 15:38:49
Sm@No a écrit : Exemple de choix: |
J'essaie tout ça, merci a vous.
Marsh Posté le 21-12-2005 à 16:25:14
nono784 a écrit : J'essaie tout ça, merci a vous. |
Bien, je viens d'essayer tout ça, ça ne fonctionne pas (peut-etre que je m'y prend mal).
On me dit que choice ne fonctionne pas sous XP, pourtant je l'utilise pour d'autres scripts, et je n'ai pas de problèmes.
Je reformule ma question:
Je veux qu'au format texte, ça affiche un choix a faire (1 ou 2 ou 3, etc...)
exemple: Toulouse => tapper 1, Paris => tapper 2, Marseille => Tapper 3, etc...
En fonction du choix entré (1, 2 ou 3), ça revoit vers une étiquette (:Paris) qui va executer une action (test.cmd).
Pouvez vous me donner un exemple rapide d'un tel script ? (avec Choice.com :-P )
Marsh Posté le 21-12-2005 à 16:50:18
Joyeux Noel Paresseux!!!
Et choice ne marche pas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@ECHO OFF
Color 0A
:start
cls
echo.
echo.
echo.
echo.
echo ATTENTION ! MISE A JOUR ANTI-VIRUS !
echo.
echo Pour chaque site de Province, il faut rediriger
echo.
echo la mise a jour Antivirus vers le serveur approprié.
echo.
echo VOULEZ VOUS CONTINUER ?
echo.
echo (O)UI (N)ON
echo.
set choice=
set /p choice=Taper votre Choix!!!:
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='N' goto FIN
if '%choice%'=='O' goto continue
if '%choice%'=='n' goto FIN
if '%choice%'=='o' goto continue
ECHO "%choice%" is not valid please try again
ECHO.
goto start
:continue
cls
echo.
echo Selectionner le site a configurer:
echo.
echo 1 ) Strasbourg
echo.
echo 2 ) Toulouse
echo.
echo 0 ) Abandon
echo.
set choice=
set /p choice=Taper votre Choix!!!:
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='0' goto FIN
if '%choice%'=='1' goto STRASBOURG
if '%choice%'=='2' goto TOULOUSE
ECHO "%choice%" is not valid please try again
ECHO.
goto continue
:STRASBOURG
echo STRASBOURG
pause
goto FIN
:TOULOUSE
echo TOULOUSE
pause
goto FIN
:FIN
cls
echo.
echo Sortie du programme
echo.
pause
exit
Marsh Posté le 21-12-2005 à 17:10:05
Merci Sm@No !!!
Super sympa !
J'vais étudier ça de près.
Pour info c'est pas de la paresse, c'est un gros manque de connaissances.
@ +
Marsh Posté le 22-12-2005 à 11:32:27
Bonjour,
Sm@No, j'ai réutilisé ton script ci-dessus, et après quelques modifs, ça fonctionne nickel ! Merci encore.
Je suis maintenant confronté a un autre problème:
Lorsque je tappe mon choix (ex: 14) ça prend en compte que le 1er chiffre (le 1).
Quand je tappe "if %choice%==14 goto TATA"
Que dois-je rajouter pour qu'il prenne en compte '14' et non '1'
Merci d'avance
Marsh Posté le 22-12-2005 à 12:09:44
if not '%choice%'=='' set choice=%choice:~0,1%
Ca ca définit le premier caratére dans la variable choice!
if not '%choice%'=='' set choice=%choice:~0,2%
Donc la définit les deux premier caractére dans choice!
Marsh Posté le 22-12-2005 à 12:18:30
ReplyMarsh Posté le 22-12-2005 à 14:00:17
nono784 a écrit : Encore merci Sm@No !!!! |
Salut,
Il est pas trop fort..., mais trop gentil
Marsh Posté le 22-12-2005 à 15:37:18
C'est NoeL!!!
Et ca ma pris moin de deux minutes!
Soyont cool!
Marsh Posté le 22-12-2005 à 16:51:21
Bonjour Sm@No,
Sans vouloir abuser de ta gentillesse, j'ai un nouveau soucis...
En fait, je m'entraine a faire de petis scripts pour mon boulot, et comme je te l'ai dis, je débute dans ce domaine, bien qu'ayant quelques connaissances.
Voilà ce que je veux faire:
Creer un fichier de commande dans lequel, a un moment, je lui demande
d'éditer un fichier 'autoexec.bat' et de remplacer une ligne de ce fichier par une autre. C'est tout ! (quitter et sauvegarder bien sûr).
PS: pour info, c'est la 5eme ligne du fichier
Merci infiniment pour ta réponse
Marsh Posté le 22-12-2005 à 16:55:26
RE...
je te rassure, j'ai quand même reussi a taper:
edit autoexec.bat
lol
Marsh Posté le 22-12-2005 à 17:21:18
Les PC son sur un domaine?
Tu veut faire quoi dans l'autoexec?
C'est quoi la ligne a éditer.
Pour info va falloir faire des boucle for et la ca devient beaucoup plus dur!
Tu as fait des recherche sur la boucle for sur le forum ou le net.
http://www.hotline-pc.org/batchscripts.htm
http://www.microsoft.com/technet/p [...] 9c82d.mspx
Marsh Posté le 22-12-2005 à 17:29:03
Décrit moi ce que tu veut faire pour voir si c'est possible!
Sachant que tout est possible mais pas forcément facil!
Marsh Posté le 22-12-2005 à 17:29:30
En fait, je t'explique:
On a une clé USB sur laquelle on boot pour masteriser les PC a partir d'un poste de déploiment qui contient toutes les images.
Le pb, c'est qu'en fonction du PC qu'on veut masteriser, on est obligé de modifier l'autoexec.bat en fonction de la carte reseau de ce PC.
Donc...
je veux faire un fichier qui demande quelle carte réseau utiliser (on donne une réponse 1,2 ou 3).
Puis, en fonction de cette réponse, ça va modifier le fichier autoexec.bat (et remplace le nom d'un fichier .com) sur la 5eme ligne.
(qui pointe sur tel ou tel driver reseau)
Je veux, a partir de mon fichier de commande, modifier un mot sur une certaine ligne dans autoexec.bat.
J'espère être assez clair dans mes explications...
encore Merci milles fois
Et Joyeux Noel
Marsh Posté le 22-12-2005 à 18:05:53
Alors il me faut un exemple d'un de t'est autoexec.
Il faudrait faire un recherche dans le autoexec et ensuite remplacer un mot ou la ligne?
Ecrire dedans c'est facil aprés lui dir ou, c'est plus dur!
Donc sinon tu peu copier un modele de autoexec celon la carte ou alors le réécrire completement!
Marsh Posté le 22-12-2005 à 19:33:27
nono784 a écrit : ... |
Ca c'est de l'archéo-informatique !
Pourquoi ne pas utiliser un cd-live XP type BartPE avec support réseau (tous les drivers de toutes les cartes sont prévus) et un plugin ghost intégré ?
C'est quand même plus sympa que'l'DOS, non ?
Marsh Posté le 22-12-2005 à 21:41:22
Dji-Pih,
ton idée m'interresse fortement, mais je ne connais pas ce CD_live XP, ni BartPE
Aurais-tu des infos là dessus, une URL ?
Pour l'instant je fais avec les moyens du bord
Sm@No,
je veux remplacer juste un seul mot, ou plûtot le nom d'un fichier (ligne5: E1000obi.com), il n'y a que ça sur la ligne.
ça doit se faire tout simplement, mais encore une fois je débute et j'ai de grosses lacunes (d'ailleurs si tu connais un site qui explique un peu comment faire ce genre de scripts ou sur le langage de ces scripts, je suis preneur).
Merci bcp
Marsh Posté le 23-12-2005 à 08:44:49
@ Dji-Pih perso je préfére les version BSD Free moteur LinUx!
Eux Hors sujet!!!
Désolé la on parle pas de récupération de donnée et l'ancien que je suis utilise le DOS pour automatiser des installation aussi.
Il veut automatiser l'installation de c'est poste.
Au passage on utilise pas le dos pour lire sur une partition NTFS mais des logiciel capable de le lire comme toi tu est capable de lire le poste!
Un script en VBS pourrai faire l'affaire aussi et serai moin archaïque.
Désolé je me suis levé du pied gauche et mon vélo est en panne GRRR!!!
"ça doit se faire tout simplement, mais encore une fois je débute et j'ai de grosses lacunes (d'ailleurs si tu connais un site qui explique un peu comment faire ce genre de scripts ou sur le langage de ces scripts, je suis preneur). "
Ouais simple c'est vite dit!
Je pense au moins deux boucle for.
Je regarderai si tu me poste un exemple de ton autoexec.
Marsh Posté le 23-12-2005 à 09:04:58
Au passage ca c'est quand mm pas mal.
http://severinterrier.free.fr/Boot/CD-MultiBoot.htm
Le coup du multi boot.
Au fait ca fait long time que ca exist un system d'exploitation sur disquette ou cd.
Et sur des versions Free BSD LinuX.
Marsh Posté le 23-12-2005 à 09:26:30
Bonjour Sm@No,
alors, pour être le plus clair possible, voici tout d'abord le script que j'ai créé (suivant tes conseils):
On selectionne le type de carte réseau présente sur le poste que l'on a a préparer.
@ECHO OFF
color 1E
:start
cls
echo/
echo/
echo
echo
echo Selectionner le type de la carte reseau du poste a masteriser:
echo
echo
echo 1/ Intel Pro100 (IBM T40/T41)
echo
echo 2/ Intel Pro1000 (IBM T42)
echo
echo 3/ Intel Proxxxx (IBM S50)
echo
echo 4/ Intel Proyyyy (IBM S51)
echo
echo 0/ Quitter
echo
echo
echo/
set choice=
set /p choice=Taper votre Choix:
if not '%choice%'=='' set choice=%choice:~0,1%
if %choice%==1 goto pro100
if %choice%==2 goto pro1000
if %choice%==3 goto Proxxxx
if %choice%==4 goto Proyyyy
if %choice%==0 goto FIN
ECHO "%choice%" n'est pas un choix correct !
ECHO.
pause
goto start
RO100
edit autoexec.bat
????????????
????????????
pause
goto FIN
RO1000
edit autoexec.bat
????????????
????????????
pause
goto FIN
ROxxxx
edit autoexec.bat
????????????
????????????
pause
goto FIN
ROyyyy
edit autoexec.bat
????????????
????????????
pause
goto FIN
:FIN
cls
echo.
echo Sortie du programme
echo.
pause
exit
Marsh Posté le 23-12-2005 à 09:31:03
A partir du choix qui est fait, il faut modifier le nom d'un fichier (en rapport avec la carte réseau choisie), dans l'autoexec.bat présent sur la clé USB (sur laquelle on boot), pour qu'il charge le driver reseau.
Voilà l'autoexec.bat
@ECHO OFF
@PROMPT $P$G
kicknic
lsl
E1000odi.com <==================
REM mouse
ECHO.
ECHO.
ECHO ImageCenter 5.0
ECHO Copyright 1994-2001 PowerQuest Corporation.
ECHO Tous droits rservs. Brevets amricains 5.675.769, 5.706.472, 5.930.831, 6.088.778 et 6.108.759. Autres brevets en cours d'homologation.
ECHO.
ECHO Chargement en cours. Veuillez patienter...
pqpcast /msn="session1" /dsk=2
C'est le nom de fichier 'E1000odi.com' qu'il faut modifier.
Il peut devenir 'E100codi.com' ou encore 'toto.com'
(nom du fichier qui charge les bons drivers en fonction de ce que l'on a choisi comme carte).
Voilà, je peux difficilement être plus clair
Merci d'avance...
Marsh Posté le 23-12-2005 à 09:32:54
Donc a la place des ???????? dans mon premier script, il faut lui dire de changer le nom du fichier 'E1000odi.com' dans l'autoexec.bat, et de le remplacer par E100codi.com ou toto.com.
Voilà, tu sais tout.
Marsh Posté le 23-12-2005 à 09:51:54
Sm@No a écrit : @ Dji-Pih perso je préfére les version BSD Free moteur LinUx! |
Que tu préfères les version BSD Free moteur LinUx, ca c'est du H.S.
"Il veut automatiser l'installation de c'est poste" => H.S., il veut automatiser son batch de boot pour choisi sa carte réseau. Il n'aura pas à le faire avec BartPE qui contient tous les drivers connus...
Y'a rien de H.S. dans l'utilisation de BartPE avec un plugin ghost pour un utilisateur du monde Windows qui souhaite restaurer ou installer des PCs facilement => C'est le TOP
Ou est la récupération de données dans l'histoire ????? Hé bien si, il pourra EN PLUS le faire avec BartPE
Même que si il veut, il pourra pousser jusqu'à UBCDwin pour EN PLUS faire de la maintenance...
nono784 => Revoici le lien : BartPE, en clair : http://severinterrier.free.fr/Boot/PE-Builder/ (et tu as de la chance, c'est un lien en français...)
A tous les bugosaure de l'informatique ,
Marsh Posté le 23-12-2005 à 09:59:58
Fait c... !
J'ai pas accès aux site que tu m'indiques là. Ils sont bloqués par le proxy.
Je regarderais ça plus tard.
Merci bcp.
Marsh Posté le 23-12-2005 à 10:01:08
nono784 a écrit : A partir du choix qui est fait, il faut modifier le nom d'un fichier (en rapport avec la carte réseau choisie), dans l'autoexec.bat présent sur la clé USB (sur laquelle on boot), pour qu'il charge le driver reseau. |
Sinon, tu mets tout simplement tes drivers dans des dossiers que tu appelles :
"1" pour le driver driver1.com
"2" pour le driver driver2.com
etc...
puis dans ton script, tu remplaces (copy ) le driver driver.com à la racine en fonction du driver de ton choix qui est dans le dossier %choice%
Marsh Posté le 23-12-2005 à 10:13:18
Je vois a peu près ce que tu veux dire, mais pas tout compris qd mm.
Sinon, j'ai trouvé une solution qui fonctionne:
Je crée 2,3,4... fichier .bat (en fonction du nombre de carte reseau différentes)
Et dans mon script, en fonction de la carte qui est choisie, je lance la commande suivante:
rename pro100.bat autoexec.bat
ça fonctionne, mais bon...
Juste par curiosité, j'aurais aimé savoir comment a partir d'un script, on modifie le contenu d'un autre fichier.
@+
Marsh Posté le 23-12-2005 à 10:19:28
M... ! ça marche pas...
Enfin si, mais une seule fois !
Après il refuse de renomer car le fichier existe déja.
Y'aurait pas un argument a rajouter pour qu'il écrase le fichier autoexec.bat sans broncher ??
Marsh Posté le 23-12-2005 à 10:33:01
Bon, j'arrête de vous ennuyer avec mes scripts, je me suis débrouillé !
je lance tout simplement:
"copy Pro100.bat autoexec.bat"
(ou Pro100.bat est en fait l'autoexec.bat avec le driver de la carte Pro100, idem avec Pro1000.bat qui lui contient le driver de la carte Pro1000, etc...)
C'est sûrement un peu rustique, mais ça marche
Marsh Posté le 23-12-2005 à 10:34:21
Merci encore a vous 2.
Il n'est pas impossible que je revienne vers vous d'ici peu
En attendant, je vous souahite un Joyeux Noël !!!!!
Marsh Posté le 23-12-2005 à 11:17:15
Ok c'est pas mal le cd de boot pour rappeler une partition.
Merci bugosaure de l'informatique
Marsh Posté le 23-12-2005 à 15:50:31
nono784 a écrit : ... |
Quand tu veux accéder à la nième ligne d'un fichier texte, cela s'appelle traiter du fichier séquentiel indexé, c'est tout simplement impossible avec du DOS...
Marsh Posté le 23-12-2005 à 16:52:41
Par contre tu peu retrouver une chaine de caractére et la changer:
Exemple:
Supprimer ou remplacer une chaîne de caractères dans un texte :
Dans un nouveau fichier Batch saisissez ceci :
for /f "delims=" %%a in ('type "%1"') do call :commande "%%a"
goto :eof
:commande
set ligne=%1
set ligne=%ligne:"=%
@echo %ligne% >>fichier2.txt
Marsh Posté le 26-12-2005 à 11:39:20
Merci Sm@No,
C'est exactement ça que je veux.
Ceci dit, je n'ai pas tout compris au script.
Ou se situe, dans le script, la chaine a modifier ?
Et ou ce situe la modification a effectuer ?
qu'est-ce que fichier2.txt ?
Merci d'avance
Marsh Posté le 26-12-2005 à 13:32:44
ReplyMarsh Posté le 26-12-2005 à 13:51:21
Sm@No a écrit : Y a la description ICI: |
Super, Merci encore
Marsh Posté le 21-12-2005 à 14:48:03
Bonjour a tous,
Je souhaite faire un script en lignes de commande et je m'y connais que très peu.
Je souhaite que l'on puisse faire des choix, et qu'en fonction de ces choix, se déroule une action.
Mon script fonctionne qu'a moitié, help !!!!!!!!!!!!!!!!!!!
Voilà le script en question:
@ECHO OFF
@set
echo. client
cls
echo/
echo/
echo
echo
echo ATTENTION ! MISE A JOUR ANTI-VIRUS !
echo
echo Pour chaque site de Province, il faut rediriger
echo
echo la mise a jour Antivirus vers le serveur approprié.
echo
echo
echo VOULEZ VOUS CONTINUER ?
echo
echo (O)UI (N)ON
echo
echo/
choice /c:ON
if errorlevel 2 goto FIN
if errorlevel 1 goto continue
:continue
cls
echo
echo Selectionner le site a configurer:
echo
echo 1 ) Strasbourg
echo
echo 2 ) Toulouse
echo
echo 0 ) Abandon
echo/
choice /c:120
************************** (a partir de là ça déconne)
if errorlevel 1 goto STRASBOURG
if errorlevel 2 goto TOULOUSE
if errorlevel 0 goto FIN
:STRASBOURG
echo STRASBOURG
pause
goto FIN
:TOULOUSE
echo TOULOUSE
pause
goto FIN
:FIN
cls
echo.
echo Sortie du programme
echo.
pause
exit
Voilà en Gros, c'est une version simplifié.
ça déconne a partir de la ligne ****************
Quoi que je tappe (0,1,2) il m'affiche 'STRASBOURG' puis il le prog se ferme.
Je voudrais qu'en tappant 0 il quitte, 1 il affiche STRASBOURG, 2 il affiche TOULOUSE.
Help !!! Please... je débute dans les scripts.