Interrogation du registre

Interrogation du registre - Shell/Batch - Programmation

Marsh Posté le 16-06-2008 à 05:14:56    

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 ?

Reply

Marsh Posté le 16-06-2008 à 05:14:56   

Reply

Marsh Posté le 16-06-2008 à 11:18:17    

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

Reply

Marsh Posté le 16-06-2008 à 16:19:30    

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 ?

Reply

Marsh Posté le 16-06-2008 à 17:56:54    

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
Reply

Marsh Posté le 16-06-2008 à 23:23:46    

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

Reply

Marsh Posté le 16-06-2008 à 23:24:22    

Pourquoi faut utiliser une boucle for ?

Reply

Marsh Posté le 17-06-2008 à 08:09:52    

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

Reply

Marsh Posté le 17-06-2008 à 16:03:20    

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

Reply

Marsh Posté le 18-06-2008 à 04:04:42    

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 ?

Reply

Marsh Posté le 18-06-2008 à 04:16:29    

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 ?

Reply

Marsh Posté le 18-06-2008 à 04:16:29   

Reply

Marsh Posté le 18-06-2008 à 20:11:21    

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é.

Reply

Marsh Posté le 18-06-2008 à 21:01:41    

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...

Reply

Marsh Posté le 19-06-2008 à 11:37:30    

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

Reply

Marsh Posté le 20-06-2008 à 16:16:20    

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
Reply

Marsh Posté le 20-06-2008 à 18:27:47    

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

Reply

Marsh Posté le 22-06-2008 à 17:44:43    

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.

Reply

Marsh Posté le 23-06-2008 à 20:28:31    

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
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed