Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
Lettre de lecteur non prise en compte
Auteur Message
Répondre en citant
Message 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...
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message 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] ENCORE UNE FOIS...)
T'es sûr que c'est "scrypt" ? J'ai toujours écrit "script" Laughing Et bizarrement, le correcteur veux corriger "scrypt" Mort de Rire




______________________________________________________
~
Répondre en citant
Message @ YamiManu 
Salut Yami Manu, Laughing

Désolé, c'est bien SCRIPT tu as raison:
http://fr.wikipedia.org/wiki/Langage_de_script

Mais 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...
Répondre en citant
Message 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]
Okay
exemple :
Code:
[code]@echo off
echo Bonjour !
pause>nul
start calc.exe[/code]





______________________________________________________
~
Répondre en citant
Message 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...
Répondre en citant
Message 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...
Répondre en citant
Message 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:




______________________________________________________
~
Répondre en citant
Message 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...
Répondre en citant
Message 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.fr

merci.




______________________________________________________
Si je ne suis pas là, c'est que je suis ailleurs...
Répondre en citant
Message 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] ), Il serait temps que tu t'en serve, sinon les codes peuvent parfois être difficiles à identifier/copier_coller




______________________________________________________
~
Répondre en citant
Message 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...
Répondre en citant
Message 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




Répondre en citant
Message 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...
Répondre en citant
Message Lettre de lecteur non prise en compte 
Je confirme Okay




______________________________________________________
~
Répondre en citant
Message 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
Message Lettre de lecteur non prise en compte 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch