Se connecter avec
S'enregistrer | Connectez-vous

Besoin d'aide sur un fichier batch paramétré !

Dernière réponse : dans Programmation

Bonjour à tous,j'ai un batch à programmer mais ce dernier à du mal a marcher.J'apprécierai qu'on puisse m'aider pour corriger les erreurs de mon batch.Je suppose qu'elles sont nombreuses mais ça m'a l'air pourtant correct.Merci d'avance
Voici l'énoncé :

1/ Afficher les paramètres X1,X2,X3,X4,X5,X6 et les valider sinon aller à la fin du batch

2/ Tester l'existence du répertoire X1 et s'il existe afficher son contenu, le supprimer entièrement après validation

3/ Créer l'arborescence suivante dans la racine du disque c:
X1 X5
x6

4/ Afficher tous les fichiers *.X2 de WINNT\SYSTEM32

5/ Demander où on veut les copier (X5,X6,nulle part) et si oui les copier dans le dossier choisi.

6/ Afficher tous les fichiers *.X3 de WINNT\SYSTEM32

7/ Demander où on veut les copier (X5,X6,nulle part) et si oui les copier dans le dossier choisi.

8/ Copier votre fichier dans X1 sous "votrenom.bat"

9/ Afficher les attributs du fichier, demander quel attribut on veut changer, changer l'attribut

10/Recommencer le point 9 tant que l'utilisateur le demande

11/ Afficher l'arborescence de X1 page par page avec les fichiers

12/ Demander si on veut recommencer le batch, si oui recommencer au point 1,sinon afficher votre fichier batch et arrêter le traitement.

Et voici mon batch à l'heure actuelle :

ECHO OFF
CLS
ECHO Bienvenue dans mon TP
ECHO 1er parametre
ECHO %1
ECHO 2nd parametre
ECHO %2
ECHO 3eme parametre
ECHO %3
ECHO 4eme parametre
ECHO %4
ECHO 5eme parametre
ECHO %5
ECHO 6eme parametre
ECHO %6
CHOICE Vos paramètres sont-ils ceux que vous voulez?
If errorlevel 2 goto fin

IF EXIST %1 GOTO 1
IF NOT EXIST %1 GOTO FIN
PAUSE

MD %1/%5
MD %1/%6

PAUSE
DIR c:/Windows/system32/*.%2

PAUSE
CHOICE /C:CUI Si vous voulez les copier dans %5 tapez C, si vous voulez les copier dans %6 tapez U et si vous ne voulez rien copier tapez I
If errorlevel 3 goto fin
IF errorlevel 2 copy C:\windows\system32\*.%2 %1\%5
If errorlevel 1 copy c:\windows\system32\*.%2 %1\%6
PAUSE

DIR c:/windows/system32/*.%3

CHOICE /C:ROC Si vous voulez les copier dans %5 tapez R,si vous voulez les copier dans %6 tapez O et si vous ne voulez rien copier tapez C
If errorlevel 3 goto fin
IF errorlevel 2 copy C:\windows\system32\*.%2 %1\%5
If errorlevel 1 copy c:\windows\system32\*.%2 %1\%6
PAUSE

COPY TPBatch.Bat c:\%1\toto.bat
PAUSE

GOTO 10

:10
ATTRIB c:\%1\Dubien.bat
CHOICE /C:RASH Si vous voulez changer l'attribut lecture seule,tapez R,si vous voulez changer l'attribut archive,tapez A,si vous voulez
changer l'attribut Système tapez S et si vous voulez changer l'attribut Caché,tapez H.Sinon tapez Q.
If errorlevel 5 goto fin
IF errorlevel 4 attrib +R c:\%1\toto.bat
If errorlevel 3 attrib +A c:\%1\toto.bat
If errorlevel 2 attrib +S c:\%1\toto.bat
If errorlevel 1 attrib +H c:\%1\toto.bat

TREE/F/P %1
PAUSE

Voulez-vous recommencer ce batch?
If errorlevel 2 goto %0
If errorlevel 1 dir %1\TPBatch.bat
GOTO FIN

:1
DIR %1
RD/S %1
PAUSE

:FIN
ECHO Au revoir !
PAUSE



Lassé par la pub ? Créez un compte
Expert Programmation

non pas de debugger :D 
Pour savoir d'où vient le problème ajoute des ECHO pour voir d'où vient ton problème.
Je n'aime pas quand en programmation, on me sort du "ça marche pas". Précise d'où vient ton problème, parce que je ne testerai pas le code. Si tu dis où est le problème, normalement, je (ou quelqu'un d'autre) t'indiquera la résolution sans problème.

Mon problème vient dès le départ en fait,je ne cherche pas à faire du "ca marche pas" pour me dédouaner du boulot et faire les autres le travail à ma place,la preuve je l'ai fait,mais j'ai beaucoup de mal avec les paramètres.Normalement si j'affiche les paramètres,il me semble que je dois les entrer.Or, quand je lance le batch bah je rentre rien.

Tu lances ton batch depuis l'explorateur j'imagine !? Lances-le à partir de l'invite de commandes :
batch.bat 1 2 3 4 5 6 => lances ton batch avec les paramètres %1 à %6 qui valent respectivement les valeurs 1,2,3,4,5 et 6 !!!

Une autre petite chose que j'ai remarqué : remplaces C:\Windows par %systemroot% ça rendra plus "portable" ton batch ! Genre moi j'ai pas C:\Windows mais C:\WinNT donc ca ne passe pas tandis qu'avec %systemroot% c''est bon !!!

Je le lance de l'invite de commandes, a partir d'un dossier dans "mes documents".
batch.bat 1 2 3 4 5 6 => lances ton batch avec les paramètres %1 à %6 qui valent respectivement les valeurs 1,2,3,4,5 et 6 !!! Je fais quoi dans le batch? 1er parametre 1%1?ainsi de suite?Je te suis mal :-p

Ben je sais pas tu mets les paramètres que tu veux !!! j'ai dis 1...6 pour faire un exemple
Si tu mets 1,2,3...6 tes paramètres vaudront 1,2,3...6 !!!
Si tu mets toto,tata,titi... tes paramètres vaudront toto,tata,titi...

Je sais pas si tu l'as fait mais va voir le lien que j'ai mis plus haut pour deux raisons : il te permet de lancer ton batch avec des paramètres et aussi de l'éxecuter en pas à pas tu verras donc quelles lignes merdent !!!
Expert Programmation

Lance par exemple ceci:
  1. batch.bat "c:\temp\test0" exe dll Vide "c:\temp\test1" "c:\temps\test2"


Comme ça dans ton code:
%0 = batch.bat
%1 = c:\temp\test0
%2 = exe
%3 = dll
%4 = Vide
%5 = c:\temp\test1
%6 = c:\temps\test2
Lassé par la pub ? Créez un compte
Tom's guide dans le monde