Je sais pas si y'en a qui s'y connaisse ici, mais la je suis tellement désespérer que je m'essaie quand même!
C'est pour un travail en info et il faut créé un fichier .cmd. C'est ça l'énoncer:
Vous devez créer un fichier pa.cmd qui permettra d'enlever un chemin du PATH, ajouter un chemin existant au début du Path et ajouter un chemin existant à la fin du Path.
Exemple:
pa + c:\windows ajouter à la fin
pa * c:\windows ajouter au début
pa - c:\windows enlève du path
J'ai trouvé pour ajouter au début et à la fin, mais pour enlever, je vois vraiment pas... :|
Ça l'air de ça pour le moment:
Code :
if '%1'=='*' goto debut
if '%1'=='+' goto fin
if '%1'=='-' goto enlever
echo.
echo Vous devez choisir entre + et *
echo Pour ajouter un chemin au debut du path, utiliser *
echo Pour ajouter un chemin au la fin du path, utiliser +
Le enlève du Path n'est pas inclus dans le programme! Et le C:\windows n'est qu'un exemple! Ce qu'il faut faire, c'est que quand on entre un chemin du path, qu'il soit n'importe ou, il doit s'enlever!
Mais pour ta réponse, je vais aller essayer ça! Merci!^^
Message édité par link258 le 15-10-2008 à 18:01:19
Alors, si j'ai bien compris, si je l'ajoute a mon programme, et ça donnerais sa?
Code :
@echo off
if '%1'=='*' goto debut
if '%1'=='+' goto fin
if '%1'=='-' goto enlever
echo.
echo Vous devez choisir entre + et *
echo Pour ajouter un chemin au debut du path, utiliser *
echo Pour ajouter un chemin au la fin du path, utiliser +
echo.
goto end
if '%2' =='' goto error
if not exist '%2' goto erreur
:erreur
echo.
echo Nom de repertoire invalide
echo.
goto end
:debut
if '%2' =='' goto erreur
if not exist %2 goto erreur
set path=%2;%path%
goto nouveau
:fin
if '%2' =='' goto erreur
if not exist %2 goto erreur
set path=%path%;%2
goto nouveau
:enlever
if '%2' =='' goto erreur
if not exist %2 goto erreur
set path=%path:%2=%
:nouveau
echo.
echo Voici le nouveau path: %path%
echo.
:end
Parce qu'en fesant cela, sa met le Path à =2! Je suis sur que je fait quelque chose de pas correcte...! Disons que je suis pas mal débutant en Batch alors je galère pas mal!
Pour faire ça bien, il suffit de faire un FOR /F sur la commande 'echo %PATH%' avec comme délimiteur le ';'. Dans le for, tu refais un FOR /F pour découper sur les caractères délimiteurs '\' et ' " ', afin d'analyser le chemin réel (car "C:\windows\" est la même chose que "C:\windows" )
Citation :
alors la solution que je t'ai donnée est bonne
Non en fait, elle a une faille. Si dans le PATH, tu as "C:\TEST0;C:\TEST0\TEST1", et que tu souhaites enlever "C:\TEST0", au final, il te resteras ";\TEST1", ce qui peut poser problème
Message édité par CRicky le 15-10-2008 à 19:49:02
------------------------------6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Apparement le commande ne fonctionne pas si tu as une variable ( %2 ) a la place de ce que tu veux enlever.
jai fait plein de test mais j'ai toujours une erreur.
dsl
ps: je voulais repondre avant toi cricky ( tenter ma chance )
mais fouarer lol ....
Message édité par tomtom30 le 15-10-2008 à 20:11:51
Je sais que je t'en demande beaucoup, mais sa serait possible que tu me l'ajoute dans mon code? Parce que les FOR le prof nous en a jamais parler, et je comprends pas vraiment... Et la le travail et à remette pour demain et toute la classe d'info compte sur moi pour amener la réponse car personne l'a trouver encore! XD
Tiens un lien qui peut t'intéresser: http://fr.wikibooks.org/wiki/DOS/For J'y avais expliqué l'utilisation du FOR dans les détails (car on me le demandait souvent ici).
Regarde le paragraphe 7 pour appliquer le FOR sur le retour d'une commande (dans ton cas, un simple ECHO), et le paragraphe 6.1 pour les options de découpage (avec délimiteur ; ou \).
Si tu n'y arrives pas, montre ton code.
ps: des cours d'informatiques où l'on apprend le batch ? je n'en vois pas l'intérêt.
------------------------------6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ce que tu mets après de in c'est la commande donc ...in ('echo %%path%%') do ( Ensuite il faut utiliser la variable d'itération %%A, pour avoir un découpage sur %%A, %%B ,etc.
Un exemple pour que tu comprennes mieux:
Code :
@echo off
for /F "tokens=1,2,4,5,6,7,8* delims=;" %%A in ('echo %%PATH%%') do (
echo chemin 1 = %%A
echo chemin 2 = %%B
echo chemin 3 = %%C
echo chemin 4 = %%D
echo chemin 5 = %%E
echo chemin 6 = %%F
echo chemin 7 = %%G
echo chemins restants = %%H
)
En fait le mieux c'est de faire quelque chose de récursif (en fait 2 boucles imbriquées suffisent). D'abord tu ne travailles pas directement sur %PATH% mais sur une variable intermédiaire. Ensuite, tu découpes seulement en récupérant le premier et le reste (tokens=1,2*), donc dans %%A tu as le premier chemin, et dans %%B le reste. Tu mets le reste (%%B) dans ta variable temporaire et tu recommences. Tu t'arrêtes lorsque tu as trouvé ou lorsque %%B est vide. Si tu trouves, il faut reconstruire le PATH. Dans un premier temps, ne t'occupe pas du découpage des \, ça viendra après.
Finalement, ce n'est pas simple comme exercice si on veut le faire proprement. Ton prof sait vraiment résoudre ça ?
Message édité par CRicky le 17-10-2008 à 19:58:48
------------------------------6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Serieusement, c'est un cinglé le prof, on a rien vu sur la matière ou presque... Et personne l'a réussi finalement. Alors je vais attendre au prochain cours je crois, voir ce qui va nous dire! XD
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.