Bonjour, ou bonsoir selon l'heure à laquelle vous lirez ces lignes.
Je voudrais réaliser un fichier batch pour sauvegarder le contenu d'un dossier sur un disque USB avec ROBOCOPY (je ne maîtrise pas du tout Power Shell).
Dans ce fichier batch, je veux récupérer le numéro d'identification du disque USB pour m'assurer que la sauvegarde s'effectue bien sur le bon disque.
Pour cela j'utilise la commande VOL qui me retourne un résultat sur 2 lignes, par exemple, si M: correspond à mon disque USB de sauvegarde :
----------------
D:\Test>VOL M:
Le volume dans le lecteur M s’appelle Maître
Le numéro de série du volume est 1CC3-54C7
----------------
Je veux donc récupérer le numéro de série du disque dans une variable i et vérifier ainsi qu'il s'agit bien du bon disque.
J'utilise pour cela la commande FINDSTR, en ligne de commande directe la syntaxe est la suivante, dans cette exemple j'affiche la valeur trouvée :
---------------
D:\Test>for /f "tokens=8 delims= " %i in ('vol m: ^| findstr /i /c:"Le numéro de série du volume"') do @echo %i
1CC3-54C7
---------------
Si j'utilise cette commande dans le fichier batch TEST.BAT, après avoir changé %i en %%i
Contenu du fichier TEST.BAT:
----------------
for /f "tokens=8 delims= " %%i in ('vol m: ^| findstr /i /c:"Le numéro de série du volume"') do @echo %%i
@REM - Pour éviter la fermeture de la fenêtre
pause
----------------
En lançant TEST.BAT, j'obtiens :
----------------
D:\Test>for /F "tokens=8 delims= " %i in ('vol m: | findstr /i /c:"Le numéro de série du volume"') do @echo %i
D:\Test>pause
Appuyez sur une touche pour continuer...
----------------
Mais le numéro de série n'est pas affiché.
Par contre, en ne gardant que "rie du volume" pour ne pas mettre de caractères accentués, en lançant TEST.BAT, j'obtiens bien le résultat escompté :
----------------
D:\Test>for /F "tokens=8 delims= " %i in ('vol m: | findstr /i /c:"rie du volume"') do @echo %i
1CC3-54C7
D:\Test>pause
Appuyez sur une touche pour continuer...
----------------
C'est la même chose si j'envoie le résultat de VOL M: dans un fichier texte intermédiaire et que je filtre avec FINDSTR.
A part un traitement différencié des caractères accentués que je ne sais pas résoudre, je n'arrive pas à trouver d'autres explications de ce comportement, quelqu'un a-t-il une idée ?
-----