OVH Cloud OVH Cloud

batch, Registre et caractères spéciaux

24 réponses
Avatar
scraper
bonjour à tous !

petit problème avec un batch, qui n'est pas mon langage "usuel" ... :-)

je cherche à interroger le registre sur une valeur particulière ...

j'utilise la commande

FOR /F "tokens=2* delims= " %%A IN ('reg query "Chemin de ma clé" /v
ENTREE') DO SET Path="%%B"

je récupère ainsi la valeur correspondant à mon entrée dans la variable B
(le code n'est pas de moi, je l'ai trouvé sur le net ...

mais mon problème est lorsque la clé que je veux lire comporte un caractère
spécial, qui manifestement n'est pas interprété par cmd ?

exemple avec l'exposant ² ... :-(
je récupère une magnifique erreur "la clé n'existe pas"

y a t il une manière de contourner ceci ?
(et une méthode plus élégante d'interroger le registre en batch ?

merci :-)


--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper

10 réponses

1 2 3
Avatar
Jean
Bonjour Jean, dans le message
news:
tu disais :

Pour infos sur cmd /u voir ce fil :

http://groups.google.be/group/microsoft.public.fr.scripting/browse_thread/thread/674eb0d298bf004e/fddbae1839257ce6?hl=fr#fddbae1839257ce6

Amicalement,


merci :-)

y'a quand même une chose que je comprends pas :
dans mon batch, comment introduire ce paramètre /U ??

à moins de l'appeler ... mais si je le lance juste en cliquant dessus ??



Si j'ai bien compris votre batch vous n'avez pas besoin de ça ici.
Votre problème était du au format de fichier dans lequel vous aviez
enregistré le batch.

Pour info on peut aussi se passer de cmd /u et changer de codepage à la
volée avec la commande CHCP.

au fait, puisque je découvre un peu tard ce langage, y a t il une possibilité
de gestion d'erreur ?


Il y a les errorlevel (niveaux d'erreur) qui sont utilisables au sein
des batchs et exploitable avec les commandes ou programmes qui en
retournent (mais ce n'est pas le cas de toutes les commandes et de tout
les programmes ... il faut consulter les documentations).

Sinon ... quitte à découvrir ... mettez vous à MSH et enterrez le batch
:-)

par exemple, lorsque je cherche à lire une clé de registre, éviter le popup
qui me prévient que Windows n'a pas réussi à trouver la clé dans le Registre
? ;-)



Il faut voir si la commande reg envoie un errorlevel dans ce cas.
Je suppose que REG /? devrait contenir l'info.
Et je vois apparemment que oui : 0 = réussite, 1 = échec (sauf pour REG
COMPARE)

Je dis *apparemment* parceque vous me parlez d'une popup ... et là en
fait il y a peu de chance que ça fonctionne .. à voir (il y a peut être
un paramètre qui empêche l'affichage des popup dans reg /? ).

Pour l'utilisation d'errorlevel vous devriez trouver ça dans une des
docs indiquées ici :

http://groups.google.be/group/microsoft.public.fr.scripting/msg/47f43a1964ba99bb?hl=fr&

(j'indique juste pour que vous n'oubliez pas qu'il faut toujours faire
les tests d'errorlevel du plus grand vers le plus petit ... donc ici
d'abord 1 puis 0).

merci



--
Jean - JMST
Belgium


Avatar
scraper
Bonjour Jean, dans le message
news:
tu disais :

y'a quand même une chose que je comprends pas :
dans mon batch, comment introduire ce paramètre /U ??

à moins de l'appeler ... mais si je le lance juste en cliquant
dessus ??


Si j'ai bien compris votre batch vous n'avez pas besoin de ça ici.
Votre problème était du au format de fichier dans lequel vous aviez
enregistré le batch.


OK

par exemple, lorsque je cherche à lire une clé de registre, éviter
le popup qui me prévient que Windows n'a pas réussi à trouver la clé
dans le Registre ? ;-)



Il faut voir si la commande reg envoie un errorlevel dans ce cas.
Je suppose que REG /? devrait contenir l'info.
Et je vois apparemment que oui : 0 = réussite, 1 = échec (sauf pour
REG COMPARE)

Je dis *apparemment* parceque vous me parlez d'une popup ... et là en
fait il y a peu de chance que ça fonctionne .. à voir (il y a peut
être un paramètre qui empêche l'affichage des popup dans reg /? ).


bon, peut être ai je mal posé ma question, ou du moins, prends je le
problème à l'envers ....

comment peut on faire, dans ce cas, pour interroger le Registre dans un
batch, et récupérer dans ce batch (pour traitement) le contenu d'une entrée
au registre (ou l'absence de cette entrée


sinon, je vais jeter un oeil à toute cette doc

merci


--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper


Avatar
Fred
Dans : news:,
Do Re Mi chel La Si Do disait :
Bonsoir !


Bonjour,

C'est curieux. Chez moi, je n'ai aucun problème pour copier des
fichiers/répertoires en cyrillique (donc en Unicode).
Par défaut, ma "console" est en CP-1252, mais j'en ai une autre en
CP-850
Attention, les batch ne doivent pas être enregistrés en UTF-8,
UTF-16... Il faut être en Ascii


Je copie également n'importe quel répertoire, avec *
Mais comment saisis-tu un nom de fichier cyrillique dans ton batch
destiné à une console cp-1252 ou cp-850 ?


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Do Re Mi chel La Si Do
Bonjour !

Effectivement, si le nom (ou une partie) contient des caractères
cyrilliques, et si je dois mettre ça dans le batch, le moyen que j'ai
trouvé, c'est de passer en CP1251.

Il suffit donc de trouver un code page compatible avec tes caractères. Mais
aussi un éditeur adéquat. J'en connais un (fabuleux ?), fourni avec Windows
: EDLIN.EXE. En plus, il ne prend pas trop de place (13 ko). Et puis, Edlin
est pilotable par batch. Pour l'aide, lancer Edlin, puis taper la commande
"? [Entrée]"

Sinon, tu peux aussi essayer CHCP 65001, et éditer de l'UTF-8. Mais c'est
sans garantie, car la plupart de mes essais ont échoué. Seuls quelques-uns
ont réussi.

Un autre élément à prendre en compte, c'est la police de caractères de la
console. Clic-droit, sur la barre de titre, puis "Propriétés" permet de
choisir une autre police. Lucida-console est compatible cp1252, et,
partiellement, utf-8.

Ce n'est pas la joie. Mais on arrive toujours à faire quelque chose. Surtout
que, comme l'a dit Jean, CHCP xxx passe bien, dans un batch.

@-salutations

Michel Claveau
Avatar
Do Re Mi chel La Si Do
Salut !

Juste une idée : REG EXPORT, puis tester le fichier ?
(pas essayé)

@+

MCI
Avatar
scraper
Bonjour Do Re Mi chel La Si Do, dans le message
news:
tu disais :

Ce n'est pas la joie. Mais on arrive toujours à faire quelque chose.
Surtout que, comme l'a dit Jean, CHCP xxx passe bien, dans un batch.


par curiosité, j'ai essayé, dans un batch, avec le fameux terme ², en
mettant auparavant cphp 850 ....

est ce correct ?

en tout cas, ça ne fonctionne pas :-(

la seule solution a été d'aller chercher le caractère correspondant grâce à
Edit, et de le copier dans mon batch (je sais, c'est nul lol


--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper

Avatar
scraper
Bonjour Do Re Mi chel La Si Do, dans le message
news:%
tu disais :

Salut !

Juste une idée : REG EXPORT, puis tester le fichier ?
(pas essayé)


hello

j'ai exporté la branche complète via reg export dans un fichier de registre
...

lorsque je l'ouvre (avec le bloc notes) pour le consulter, le caractère ²
apparait bien normalement ....
je ne comprends pas ce que tu entends par "tester le fichier" ?

merci



--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper

Avatar
Do Re Mi chel La Si Do
Mais, avec CHCP 1252, il n'y aura pas de problème.

Le cp-1252 correspond, grosso-modo, à l'iso-8859-15 (iso-8859-1 plus
l'euro). C'est celui que j'utilise par défaut.
Le cp 850 est une survivance de l'ancien MS/DOS. En 1999, Microsoft l'a
remplacé par cp-1252. Mais cp-850 existe encore, pour des questions de
compatibilité avec les anciens logiciels DOS.

(et, ne pas oublier de passer en police Lucida-Console).

@+

MCI
Avatar
Do Re Mi chel La Si Do
Re !

REG EXPORT
permet de créer un fichier.

if errorlevel 1 echo Aaaaargh ! Une erreur !
permet de tester s'il y a eu un problème.

FOR
permet de lire le contenu du fichier, ligne à ligne. On peut alors tester le
contenu des lignes, et, donc, tester le fichier.


@+

MCI
Avatar
Do Re Mi chel La Si Do
Et, voici un exemple :


@echo off
reg export "HKCUNetworkR" rrrr.txt >temp.txt
if errorlevel 1 goto :FINERR
type rrrr.txt |find "UserName"
del rrrr.txt
del temp.txt
goto :FIN

:FINERR
echo Erreur Erreur Erreur Erreur Erreur Erreur

:FIN


Il retrouve la clef "UserName" du lecteur réseau "R:"
1 2 3