Auteur |
Message |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non prise en compte
Bonjour,
Je suis nouveau sur le site et aussi dans l'écriture des Batchs. J'ai écrit un petit scrypt pour détecter la présence/ou non de la clé USB, je butte sur un problème.
Description du scrypt:
1) Dans la partie saisie on lit la valeur contenue dans le fichier c:\spwusbhk.txt On obtient la variable %cle% qui correspond à la lettre de la clé USB. 2) Ensuite if existe vérifie si le même fichier existe sur la clé USB (ce qui est le cas), on en déduit si la clé est connectée ou non. 3) Selon le résultat on affiche soit: la clé USB est connectée ou non.
Voici le scrypt qui me pose problème:
rem saisie de la lettre attribuée à la clé USB :saisie echo off cls set /p cle= < C:\spwusbhk.txt echo lettre de la cl‚ USB = %cle%: echo. pause
rem vérifier si la clé USB est connectée if exist "%cle%:\spwusbhk.txt" goto presente
rem clé usb absente :absente echo la cl‚ USB n'est pas connect‚e! pause
rem clé usb présente :presente echo La cl‚ USB est connect‚e, OK! pause
Voici le même scrypt modifié au niveau de la lettre de la clé USB. J'ai simplement remplacé après if exist la variable %cle% par la lettre effective de la clé USb F: Maintenant le scrypt fonctionne correctement:
rem saisie de la lettre attribuée à la clé USB :saisie echo off cls set /p cle= < C:\spwusbhk.txt echo lettre de la cl‚ USB = %cle%: echo. pause
rem vérifier si la clé USB est connectée if exist "f:\spwusbhk.txt" goto presente
rem clé usb absente :absente echo la cl‚ USB n'est pas connect‚e! pause
rem clé usb présente :presente echo La cl‚ USB est connect‚e, OK! pause
Il s'agit probablement d'une erreur de syntaxe. If existe reconnait le lecteur f: mais pas sous la forme de variable %cle%. Si quelqu'un pouvait m'aider je serait vraiment reconnaissant.
Cordialement.
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Jeu 26 Juin 2014 - 18:27 |
|
 |
Publicité
|
 Publicité
|
Jeu 26 Juin 2014 - 18:27 |
|
 |
YamiManu
Batcheur Super-Master

 Hors ligne
Inscrit le: 17 Fév 2014
Messages: 349
Localisation: Devant mon PC  Niveau en programmation: Niveau en graphisme: Quelque chose a dire ?: Vive le batch ! \o/ Point(s): 582 Moyenne de points: 1,67 Systeme d exploitation: Windows 8.1
|
 Lettre de lecteur non prise en compte
Un modo aurait pu le déplacer, là ça fait 2 topics pour rien XD (Au fait, ![Pensez à [CODE]](http://img.xooimage.com/files7/4/3/4/code-95b9aa.png) ENCORE UNE FOIS...) T'es sûr que c'est "scrypt" ? J'ai toujours écrit "script"  Et bizarrement, le correcteur veux corriger "scrypt"
______________________________________________________ ~
|
Jeu 26 Juin 2014 - 19:12 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 @ YamiManu
Salut Yami Manu, Désolé, c'est bien SCRIPT tu as raison: http://fr.wikipedia.org/wiki/Langage_de_scriptMais bon j'ai toujours pas la solution pour justement mon "script". Penses-tu qu'il faudrait poster dans "analyses de batchs"? Autrement tu ne verrais pas une solution? Cordialement.
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Jeu 26 Juin 2014 - 19:38 |
|
 |
YamiManu
Batcheur Super-Master

 Hors ligne
Inscrit le: 17 Fév 2014
Messages: 349
Localisation: Devant mon PC  Niveau en programmation: Niveau en graphisme: Quelque chose a dire ?: Vive le batch ! \o/ Point(s): 582 Moyenne de points: 1,67 Systeme d exploitation: Windows 8.1
|
 Lettre de lecteur non prise en compte
Bah si tu développais un peu mieux ton problème ça serait plus simple, parce que sur mon Windows XP SP3 aucun problème. Et met ton premier et deuxième code entre Code:[code][/code]  exemple : Code:[code]@echo off echo Bonjour ! pause>nul start calc.exe[/code]
______________________________________________________ ~
|
Jeu 26 Juin 2014 - 19:53 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non pris en compte
Salut Yami Manu,
Je viens de voir ta réponse dans la rubrique "vos créations en programmation". Tu dis avoir testé le code et que tu ne vois pas le problème.
Tu dis avoir testé avec une clé usb E: Probablement tu as créé un fichier vide C:\spwusbhk.txt à la racine de ton disque dur C: Ensuite tu as créé un fichier E:\spwusbhk.txt à la racine de ta clé usb, fichier contenant la valeur "F".
Dans ce cas effectivement avec la ligne: if exist "E:\spwusbhk.txt" goto presente cela fonctionne parfaitement.
Maintenant essaye de remplacer cette même ligne par: if exist "%cle%:\spwusbhk.txt" goto presente là malheureusement cela ne fonctionne plus!
Pourtant la 7ème ligne du batch: echo lettre de la cl‚ USB = %cle%: affiche bien la lettre de la clé usb. donc la variable %cle% a bien été prise en compte. C'est le if existe qui ne veut pas reconnaitre la variable %cle% c'est là mon problème.
Je suppose qu'il s'agit d'une erreur de syntaxe. Puisque cela fonctionne avec if exist "E:\spwusbhk.txt" goto presente je pense qu'il doit y avoir une solution pour effectuer ce même test mais avec la variable %cle% en lieu et place de la lettre de lecteur E:
Mais alors là je sèche complètement, si quelqu'un avait la solution, merci d'avance.
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Jeu 26 Juin 2014 - 20:21 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non pris en compte
YamiManu,
Biensûr dans:
Tu dis avoir testé avec une clé usb E: Probablement tu as créé un fichier vide C:\spwusbhk.txt à la racine de ton disque dur C: Ensuite tu as créé un fichier E:\spwusbhk.txt à la racine de ta clé usb, fichier contenant la valeur "F".
il fallait lire:
Ensuite tu as créé un fichier E:\spwusbhk.txt à la racine de ta clé usb, fichier contenant la valeur "E".
Désolé pour cette omission.
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Jeu 26 Juin 2014 - 20:26 |
|
 |
YamiManu
Batcheur Super-Master

 Hors ligne
Inscrit le: 17 Fév 2014
Messages: 349
Localisation: Devant mon PC  Niveau en programmation: Niveau en graphisme: Quelque chose a dire ?: Vive le batch ! \o/ Point(s): 582 Moyenne de points: 1,67 Systeme d exploitation: Windows 8.1
|
 Lettre de lecteur non prise en compte
Je n'ai pas touché à la variable pendant mon test, je l'ai laissée en "%cle% machin". Et pour les fichiers, j'ai fait l'inverse de toi : La lettre doit être dans C: et le vide dans la clé USB. Veux-tu que je te donne le code exactement comme je l'ai testé ? Parce que je t'assure que cela fonctionne. PS : Je précise une fois de plus que le fichier contenant la lettre est à la RACINE DE C: ET NON DE E:
______________________________________________________ ~
|
Jeu 26 Juin 2014 - 20:29 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non pris en compte
Lettre de lecteur non pris en compte
@ YamiManu,
Prérequis:
1) Il existe un fichier spwusbhk.txt contenant la lettre E à la racine du disque C: 2) Il existe un fichier spwusbhk.txt contenant la lettre E à la racine de la clé usb E:
Ce code fonctionne:
[code] rem saisie de la lettre attribuée à la clé USB :saisie echo off cls set /p cle= < C:\spwusbhk.txt echo lettre de la cl‚ USB = %cle%: echo. pause
rem vérifier si la clé USB est connectée if exist "E:\spwusbhk.txt" goto presente
rem clé usb absente :absente echo la cl‚ USB n'est pas connect‚e! pause
rem clé usb présente :presente echo La cl‚ USB est connect‚e, OK! pause [\code]
Ce code ne fonctionne pas:
[code] rem saisie de la lettre attribuée à la clé USB :saisie echo off cls set /p cle= < C:\spwusbhk.txt echo lettre de la cl‚ USB = %cle%: echo. pause
rem vérifier si la clé USB est connectée if exist "%cle%:\spwusbhk.txt" goto presente
rem clé usb absente :absente echo la cl‚ USB n'est pas connect‚e! pause
rem clé usb présente :presente echo La cl‚ USB est connect‚e, OK! pause [\code]
La seule différence réside en: if existe "%cle% et if existe "E:
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Jeu 26 Juin 2014 - 20:52 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non pris en compte
@ YamiManu, Merci pour ta réponse. En fait, cela ne change rien, les deux fichiers contiennent la lettre du lecteur. Il n'y a donc pas de fichier vide. Mais chez moi avec %cle% cela ne fonctionne toujours pas, j'arrive toujours sur "La clé USB n'est pas connectée!" Le branchement vers :presente ne s'effectue pas. Je suis en mode administrateur sur Windows 7. Là, je n'y comprend vraiment plus rien. Volontiers envoie moi ton code à: hans.bitcoin@gmx.frmerci.
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Jeu 26 Juin 2014 - 21:01 |
|
 |
YamiManu
Batcheur Super-Master

 Hors ligne
Inscrit le: 17 Fév 2014
Messages: 349
Localisation: Devant mon PC  Niveau en programmation: Niveau en graphisme: Quelque chose a dire ?: Vive le batch ! \o/ Point(s): 582 Moyenne de points: 1,67 Systeme d exploitation: Windows 8.1
|
 Lettre de lecteur non prise en compte
Je te l'enverrais par mail quand j'en aurais le temps mais je rappelle que nous sommes sur un forum d'entraide. Si d'autres personnes ont un jour un problème similaire, elles pourraient se référer à ce topic; C'est donc pour cela qu'il me semble juste de poster également la réponse ici. Code:REM saisie de la lettre attribuée à la clé USB :saisie echo off cls set /p cle= < C:\spwusbhk.txt echo lettre de la cl‚ USB = %cle%: echo. pause
REM vérifier si la clé USB est connectée if exist "%cle%:\spwusbhk.txt" goto presente REM Le fichier sur la clé USB peut être vide vu que tu n'a pas precisé de contenu
REM clé usb absente :absente echo la cl‚ USB n'est pas connect‚e! pause
REM clé usb présente :presente echo La cl‚ USB est connect‚e, OK! pause
REM OUI, C'EST TOUT SIMPLEMENT TON CODE, JE N'AI RIEN CHANGE. MAIS IL FONCTIONNE, CA DOIT VENIR DE WIN7. REM SUR MON WINDOWS XP SERVICE PACK 3 CA MARCHE IMPEC !!! PS : EH OUI, J'AI UTILISE LA BALISE CODE ( ![Pensez à [CODE]](http://img.xooimage.com/files7/4/3/4/code-95b9aa.png) ), Il serait temps que tu t'en serve, sinon les codes peuvent parfois être difficiles à identifier/copier_coller
______________________________________________________ ~
|
Jeu 26 Juin 2014 - 21:38 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non prise en compte
Bonjour YamyManu,
Merci pour ta réponse. Pas besoin d'envoyer le script par mail puisque tu l'as mis sur ce topic ce qui est logique.
Si le problème vient de Windows 7 c'est vraiment merdique, encore une spécialité de crosoft. Il faudra donc que je trouve une autre solution et le faire avec une ou des autre/s instruction/s.
Quelle galère... encore un grand merci pour tout le temps que tu as consacré à mon problème. Je te souhaite une excellente journée.
Cordialement, Hans
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Ven 27 Juin 2014 - 07:38 |
|
 |
temp
Batcheur Super-Master

 Hors ligne
Inscrit le: 10 Juil 2011
Messages: 266
Point(s): 652 Moyenne de points: 2,45 Systeme d exploitation: xt
|
 Lettre de lecteur non prise en compte
salut, regarde s'il n'y a pas un espace après ou avant la lettre du volume dans ton fichier texte, et surtout que c'est bien positionné sur la première ligne. sinon pour approfondir, essaie ceci: Code: set "clef=" echo.E>c:\temp_file.txt set /p clef=<c:\temp_file.txt echo.clef: "%clef%" pause
|
Ven 27 Juin 2014 - 10:31 |
|
 |
SaintBlaise
Batcheur Avancé

 Hors ligne
Inscrit le: 26 Juin 2014
Messages: 15
Localisation: Franche-Comté  Niveau en programmation: Niveau en graphisme: Point(s): 45 Moyenne de points: 3,00 Systeme d exploitation: Windows 7
|
 Lettre de lecteur non prise en compte
@ temp,
Merci pour ton message. Au niveau de la saisie de la lettre du lecteur usb tout est ok puisque le script me l'affiche après l'avoir lu dans le fichier spwusb.txt
Le problème c'est le if exist qui n'accepte pas la variable %cle% alors que si je mets if exist "E:\spwusbhk.txt" goto presente cela fonctionne parfaitement.
Je suis sous Windows 7, il semble (YamiManu) que sous XP SP3 mon script fonctionne impeccablement.
______________________________________________________ Si je ne suis pas là, c'est que je suis ailleurs...
|
Ven 27 Juin 2014 - 17:27 |
|
 |
YamiManu
Batcheur Super-Master

 Hors ligne
Inscrit le: 17 Fév 2014
Messages: 349
Localisation: Devant mon PC  Niveau en programmation: Niveau en graphisme: Quelque chose a dire ?: Vive le batch ! \o/ Point(s): 582 Moyenne de points: 1,67 Systeme d exploitation: Windows 8.1
|
 Lettre de lecteur non prise en compte
Je confirme
______________________________________________________ ~
|
Ven 27 Juin 2014 - 17:51 |
|
 |
temp
Batcheur Super-Master

 Hors ligne
Inscrit le: 10 Juil 2011
Messages: 266
Point(s): 652 Moyenne de points: 2,45 Systeme d exploitation: xt
|
 Re: Lettre de lecteur non prise en compte
. SaintBlaise a écrit: Le problème c'est le if exist qui n'accepte pas la variable %cle% alors que si je mets if exist "E:\spwusbhk.txt" goto presente cela fonctionne parfaitement.
vérifie alors que l'encodage de ton fichier script est bien au format ansi et pas unicode, et que la lettre de montage ta clef par windows n'a pas changer entre temps. ça doit être un truc de rien du tout parce que ce serait bizarre que le comportement de 'if exist' change entre xp et 7. Au pire, envoie ton script zippé en pièce jointe...
Dernière édition par temp le Ven 27 Juin 2014 - 21:30; édité 1 fois
|
Ven 27 Juin 2014 - 21:24 |
|
 |
Contenu Sponsorisé
|
 Lettre de lecteur non prise en compte
|
Aujourd’hui à 07:01 |
|
 |
|