Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2407 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Interrogation du registre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interrogation du registre

n°1746862
celestus
Posté le 16-06-2008 à 05:14:56  profilanswer
 

Truc très bête... 2 questions qui me paraissais super simples avant...
 
1 : registre :
 
Je voudrais attribuer la donnée contenue dans la valeur "My Music" de la clé
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
 
Pourquoi ? Pour pouvoir copier des trucs dans ce dossier même si je le change de place.
Simplissime donc.
 
Sur vbs, j'avais l'habitude de faire
getstringvalue racine, clé, valeur, variable
wscript.echo "la donnée est " & variable
 
Mais sur batch,
set variable=Reg Query(REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music" )
ne marche pas.
 
Il a pas l'air de capter ce que je lui demande vu qu'il m'affiche toute la chaîne de caractères...
 
Comment je peux faire ? What is the syntaxe plz ?
 
2ème qu :
Sinon autre question, c'est quoi l'équivalent de & vbCRLF & en batch ?
comment sauter des lignes dans la chaine de caractères d'une variable ?
 
Ex : en VBS
 
code = 403
erreur = "ton windows il a planted" & vbCRLF & "t'as trop joué avec WMI, n00b, code d'erreur = " & code
wscript.echo erreur
 
Comment j'exprime ça en batch ?

mood
Publicité
Posté le 16-06-2008 à 05:14:56  profilanswer
 

n°1746967
blastkille​r
Posté le 16-06-2008 à 11:18:17  profilanswer
 

1)  
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "M y Music" /t reg_sz /d "ce que tu veux" /f
 
2)
Pour sauter des lignes dans une chaine de caractère tu peux pas en batch. T'es obligé de diviser la variable en 2 et de faire 2 ECHO

n°1747099
celestus
Posté le 16-06-2008 à 16:19:30  profilanswer
 

Merci pour le 2, mais pour le 1, c'est pas ça.
 
avec reg add, tu ne fais qu'écrire la valeur dans le registre.
 
ce que je veux, moi, c'est STOCKER la donnée que tu as appelé "ce que tu veux" dans une variable.
 
Comment on fait ?

n°1747133
blastkille​r
Posté le 16-06-2008 à 17:56:54  profilanswer
 

Ha ok j'avais mal compris.
 

Code :
  1. for /f "delims=" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music" ^| findstr "My Music"') do set variable="%%a"
  2. for /f "tokens=3 delims= " %%b in ('echo %variable%') do set var="%%b"
  3. set var=%var:"=%
  4. echo Dossier My Music : %var%


 
Heu la tabulation passe mal, c'est donc une tabulation après "tokens=3 delims=

Message cité 1 fois
Message édité par blastkiller le 16-06-2008 à 17:58:43
n°1747296
celestus
Posté le 16-06-2008 à 23:23:46  profilanswer
 

oulalala un truc si compliqué pour quelque chose de si basique ?

n°1747298
celestus
Posté le 16-06-2008 à 23:24:22  profilanswer
 

Pourquoi faut utiliser une boucle for ?

n°1747351
celestus
Posté le 17-06-2008 à 08:09:52  profilanswer
 

Vous n'avez pas un lien pour un bon tuto en batch svp ?
De préférence en français ?

n°1747652
blastkille​r
Posté le 17-06-2008 à 16:03:20  profilanswer
 

Non des bons tutos sur le batch c'est rare, si tu veux apprendre tu me demandes ;)

n°1747980
celestus
Posté le 18-06-2008 à 04:04:42  profilanswer
 

Je risque d'avoir énormément de questions... C'est ça l'ennui.
 
Pour l'instant, ma seule question est : Faut-il choisir le VBS ou le Batch ?
 
Je cherche à créer des scripts qui peuvent installer/désinstaller proprement mes programmes préinstallés, en copiant/supprimant des fichiers/dossiers/clés de registres, ce qui impose de pouvoir
- Détécter la présence de clés de registres
- Enumérer les valeurs d'une clé de registre
- Lire la donnée d'une valeur
 
Jusqu'ici je passais par WMI en VBS, mais il est formidablement lent, alors que Reg.exe est tellement plus rapide.
 
M'est donc venue l'idée du batch.
 
Mais le fait de ne pouvoir mettre de commentaires à côté des lignes me court déjà...
 
=> Questions :
 
1 - Qu'est-ce qui est le plus rapide ? VBS ou Batch ?
2 - Qu'est-ce qui évolue le mieux en terme d'améliorations (notamment pour les fonctions 64 bit) ?
3 - Qu-est ce qui est le moins compliqué ?
4 - Y a-t-il des aspects pratiques que j'ignore dans le batch à part la vitesse ?
 
Lequel me conseillez-vous entre VBS et batch ?

n°1747981
celestus
Posté le 18-06-2008 à 04:16:29  profilanswer
 

Sinon j'ai entendu parler de Powershell...
 
Niveau fonctionalités et rapidité, c'est mieux ou moins bien que VBS ou batch ?
 
Ca vaut le coup que je l'apprenne ?

mood
Publicité
Posté le 18-06-2008 à 04:16:29  profilanswer
 

n°1748588
blastkille​r
Posté le 18-06-2008 à 20:11:21  profilanswer
 

J'ai toujours codé qu'en Batch, tout ce que j'ai voulu codé, je l'ai codé.
Je te dis ça parce que beaucoup te diront que le batch n'est pas assez puissant...
 
Après je peux pas comparer le batch aux autres langages car je ne code pas dans ces langages.
 
Beaucoup de questions sa me dérange pas. Je t'envoi mon msn par message privé.

n°1748609
celestus
Posté le 18-06-2008 à 21:01:41  profilanswer
 

Merci beaucoup.
Je vais pas te déranger tout de suite parce qu'en ce moment je prépare mon concours d'internat donc l'année va s'annoncer très dure, mais après je vais m'y mettre, donc je risque d'avoir pas mal de questions...

n°1748809
bjone
Insert booze to continue
Posté le 19-06-2008 à 11:37:30  profilanswer
 

dans l'absolu, le vbs est largement au-dessus, puisque tu peux attaquer des objets com.

n°1749426
edgard007
Posté le 20-06-2008 à 16:16:20  profilanswer
 

blastkiller a écrit :

Ha ok j'avais mal compris.
 

Code :
  1. for /f "delims=" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music" ^| findstr "My Music"') do set variable="%%a"
  2. for /f "tokens=3 delims= " %%b in ('echo %variable%') do set var="%%b"
  3. set var=%var:"=%
  4. echo Dossier My Music : %var%


 
Heu la tabulation passe mal, c'est donc une tabulation après "tokens=3 delims=


 
plus simple :
 
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" |find "My Music" |awk {"print $3"}>tmp.tmp
for /F %%i in (tmp.tmp) do set variable=%%i
 
Tu peux remplacer le awk par |awk {"print $3,$4,$5..."} si il ya plusieurs valeurs dans ta clef


Message édité par edgard007 le 20-06-2008 à 16:20:44
n°1749493
blastkille​r
Posté le 20-06-2008 à 18:27:47  profilanswer
 

awk pas présent de base dans windows...
Moi j'ai l'habitude de coder qu'avec des commande présente dans win

n°1749862
edgard007
Posté le 22-06-2008 à 17:44:43  profilanswer
 

Tu peux le telecharger ou si tu veux je te l'envoi par mail ... awk comme sed sont des outils qui facilite la vie et allège le code.

n°1750365
Eric_71
Posté le 23-06-2008 à 20:28:31  profilanswer
 

Citation :

plus simple :
 
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" |find "My Music" |awk {"print $3"}>tmp.tmp
for /F %%i in (tmp.tmp) do set variable=%%i


 
Plus court et sans awk :
 
for /f "skip=4 tokens=1-2* delims=:" %%A in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"') do set VAR=%systemdrive%%%B
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Interrogation du registre

 

Sujets relatifs
Modification d'une chaine du registre uniquement en batchMAJ clé de registre au logon
[Java/MySQL] interrogation bdd[Résolu] VB.NET lire clé registre
comparaison de registre et fichier .regTester la présence d'une clé de registre
Récupérer valeur d'une clé de registremodification registre batch
Lancer une modif base de registre + lancer une application dans un batSuprimer une ligne de registre
Plus de sujets relatifs à : Interrogation du registre


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)