Récupération d'une Donnée (Lettre du lecteur amovible)

Résolu
Glyphe -  
brucine Messages postés 21615 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'aimerais pouvoir sélection la lettre du lecteur amovible pour voir ensuite aller chercher un fichier dedans.


cls

@Echo Off

FOR /F ["delims= "] %%G IN (wmic logicaldisk where drivetype^=2 get deviceid, volumename | find "UDISK") DO Echo %%G

Set /p ip=Ip Imprimante :

cscript C:\Windows\SysWOW64\Printing_Admin_Scripts\fr-FR\prnport.vbs -a -r %ip% -h %ip% -o raw -n 9100
cls
if %errorlevel% LEQ 1 goto us
Echo Port %ip% Ouvert
:us
cscript C:\Windows\SysWOW64\Printing_Admin_Scripts\en-US\prnport.vbs -a -r %ip% -h %ip% -o raw -n 9100
Echo Port %ip% Open

echo. --------------------------------------------------------------------------------------------------
@Echo Veuillez Patienter pendant l'installatation
rundll32 printui.dll, PrintUIEntry /if /f "%Disk%\ADDPRINTER\EUPD_Core_x64_27005\E_JFB0DE.INF" /w /r "%ip%" /m "EPSON Universal Print Driver"
:end
Echo %errorlevel%
pause
Echo Imprimante Installer :)

Control Printers


J'ai l'erreur :

%%G était inattendu.
A voir également:

3 réponses

barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
Bonjour,

Essaie en écrivant ta boucle FOR comme ceci :
FOR /F "delims= " %%G IN ('wmic logicaldisk where drivetype^=2 get deviceid^,volumename ^| find "UDISK"') DO echo.%%G



1
Glyphe
 
Merci beaucoup,

j'ai aussi trouvé une solution plus simple .

rundll32 printui.dll, PrintUIEntry /if /f "%CD:~0,1%:\ADDPRINTER\EUPD_Core_x64_27005\E_JFB0DE.INF" /w /r "%ip%" /m "EPSON Universal Print Driver"


%CD:~0,2% pour afficher directement la lettre de la ou et lancer le .bat

merci encore.
0
brucine Messages postés 21615 Date d'inscription   Statut Membre Dernière intervention   3 406
 
Bonjour,

Il faut prendre garde aux faux amis:
%~dp0 et %CD:~0,1% me retournent respectivement le chemin et la lettre de lecteur de la clé d'où le batch est lancé (et donc a fortiori ne s'appliquent pas si le batch est lancé depuis le PC), tandis que nombre de clés n'ont pas de valeur volumename faute qu'un LABEL ait été attribué.

Dans ce dernier cas de figure, il existe au moins 2 façons de retourner la lettre d'une clé USB selon des critères spécifiques.

La plus simple consiste à tester sur cette clé l'existence d'un fichier spécifique et improbable, supposons que j'y ai créé un fichier ascii.txt vide, il me suffit alors d'écrire:


@echo off

FOR %%A IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%A:\ascii.txt SET LECT=%%A:\


Si je tiens à utiliser wmic, il est alors plus sain d'utiliser une autre propriété spécifique à cette clé, le numéro de série, qui est persistant sur un PC déterminé tant que la clé n'est pas formatée, et que j'obtiens par VOL; par exemple, VOL N: me retourne:


Le volume dans le lecteur N n’a pas de nom.
Le numéro de série du volume est 8072-A806


Comme prévu, le volumename échoue, je dois utiliser le numéro de série sans tiret: 8072A806, et je peux retourner la lettre de lecteur suivie de :\ comme suit:


@echo off

SET numserie=8072A806
SET chem=\:

FOR /F "skip=1 tokens=1,2 delims=: " %%G in ('wmic logicaldisk where drivetype^=2 get name^,volumeserialnumber^') DO SET "letter=%%G" & SET "serie=%%H" & CALL :PROCESS
GOTO :EOF

:PROCESS
IF %serie%==%numserie% SET "lecteur=%letter%%lecteur%%chem%"
IF %serie%==%numserie% echo %lecteur%
pause >nul

:EOF
0