IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Optimisation extraction variables [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut Optimisation extraction variables
    Salut,

    j'utilise un petit batch qui extrait des valeurs du registre et les affecte à des variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop" > path.txt
    FINDSTR "Desktop" path.txt > path2.txt
    FOR /F "tokens=3 delims=	" %%a IN (path2.txt) DO (SET Bureau=%%a
    )
    REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" > path.txt
    FINDSTR "Personal" path.txt > path2.txt
    FOR /F "tokens=3 delims=	" %%a IN (path2.txt) DO (SET Documents=%%a
    )
    REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Programs" > path.txt
    FINDSTR "Programs" path.txt > path2.txt
    FOR /F "tokens=3 delims=	" %%a IN (path2.txt) DO (SET MenuDemarrerPrograms=%%a
    )
    [...]
    ça marche très très bien mais je trouve la forme très moyenne, et je cherche à l'optimiser en imbriquant deux boucles, l'une qui teste les valeurs, l'autre qui teste les variables. C'est à bout de force que j'en suis arrivé à cette usine à gaz qui n'a rien de comparable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    FOR %%I IN (
    	        "Desktop"
    	        "Personal"
    	        "Programs"
    	        "Startup"
    	        "Start Menu"
    	        "Favorites"
    	        "Local AppData"
    ) DO FOR /F "tokens=3 delims=	" %%G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v %%I') DO (
    ECHO %%G > Path.txt
    FOR /F "tokens=*" %%C IN (Path.txt) DO FOR %%A IN (
    Bureau
    Documents
    MenuDemarrerPrograms
    Demarrage
    MenuDemarrer
    Favoris
    LocalAppData
    ) DO SET %%A=%%G
    )
    pause
    le résultat a au moins le mérite d'être comique, toutefois ce code me permet de vous préciser quel type d'orientation je recherche.

    Est-ce que vous auriez une suggestion qui soit à peu près dans cet esprit ?

    Merci

  2. #2
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Salut,

    Tu ne préférais pas plutôt un script auquel tu donnerais par exemple un paramètre comme «Desktop» et qui te donnerait en sortie le chemin du bureau?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Salut, et merci

    en fait je voulais surtout savoir si c'était possible d'imbriquer deux ou trois boucles comme tenté ci-dessus, où à l'aide d'une sorte de tableau dans le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FOR %%I IN (
    	        "Desktop"	Bureau
    	        "Personal"	Documents
    	        "Programs"	MenuDemarrerPrograms
    	        "Startup"	Demarrage
    	        "Start Menu"	MenuDemarrer
    	        "Favorites"	Favoris
    	        "Local AppData"	LocalAppData
    ) DO
    le problème étant qu'en fait il faudrait que l'affectation soit faite sur la variable correspondante, alors que dans mon script toutes les combinaisons se succèdent.

    Tu pensais à quoi ?

  4. #4
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Citation Envoyé par eZula Voir le message
    Tu pensais à quoi ?
    À de la flexibilité, quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    findpath /desktop
    affichage: x:\chemin\utilisateur\bureau
    (pour rappel, dans une configuration par défaut le bureau se trouve dans %userprofile%\bureau)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    findpath /StartMenu
    affichage: x:\chemin\utilisateur\Menu Démarrer
    Tu l'auras compris, l'avantage est de pouvoir réutilisé findpath dans n'importe quel script.
    (findpath étant à faire bien entendu)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=*" %%i in ('findpath /StartMenu') do set menudemarrer=%%i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=*" %%i in ('findpath /Startup') do copy /b link.lnk %%i\link.lnk

    Pour ton problème de correspondance, voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for %%p in (
    "Desktop=Bureau"
    "Personal=Documents"
    "Programs=MenuDemarrerPrograms"
    ) do (
    for /f "tokens=1,* delims==" %%i in ('echo %%~p') do echo %%i [%%j])
    enjoy;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Salut,

    je me suis inspiré de ton dernier code pour en arriver à qquechose de plus satisfaisant qu'au départ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    if exist Path.txt del Path.txt
    
    FOR %%p IN (
    	    "Desktop=Bureau"
    	    "Personal=Documents"
    	    "Programs=MenuDemarrerPrograms"
    	    "Startup=Demarrage"
    	    "Start Menu=MenuDemarrer"
    	    "Favorites=Favoris"
    	    "Local AppData=LocalAppData"
    	   ) DO (FOR /F "tokens=1,* delims==" %%i IN ('echo %%~p') DO (
    FOR /F "tokens=3 delims=	" %%G IN ('SWREG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v %%i') DO (
    SET %%j=%%G)
    )
    )
    (
    ECHO Variables %Username%
    ECHO.
    ECHO Bureau : %Bureau%
    ECHO Documents : %Documents%
    ECHO MenuDemarrerPrograms : %MenuDemarrerPrograms%
    ECHO Demarrage : %Demarrage%
    ECHO MenuDemarrer : %MenuDemarrer%
    ECHO Favoris : %Favoris%
    ECHO LocalAppData : %LocalAppData%
    )>> Path.txt
    Notepad Path.txt
    
    PAUSE
    Donc merci bp pour cette suggestion.

    Cependant il y a un souci avec les noms %%j contenant des espaces, à savoir Start Menu et Local AppData
    J'ai tenté de jouer sur les ~ dans les différentes boucles, rien à faire, il affiche bien toutes les variables dans Path.txt à l'exception de %MenuDemarrer% et %LocalAppData%

    je sens que c'est pas loin, mais il me manque encore des réflexes avec la syntaxe optionnelle

  6. #6
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Citation Envoyé par eZula Voir le message
    Cependant il y a un souci avec les noms %%j contenant des espaces, à savoir Start Menu et Local AppData
    Pour que ta valeur, surtout si elle est composée d'un ou plusieurs espaces, soit considérée comme une seule entité (de surcroit un seul paramètre /v à la commande «reg») il faut la mettre entre guillemets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    ... for ... reg query ... \CurrentVersion\Explorer\Shell Folders" /v "%%i" '
    ...
    Citation Envoyé par eZula Voir le message
    je sens que c'est pas loin
    Moi je sens que c'est tout près.

    Bonne continuation.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Salut

    ok tu as raison, j'avais essayé mais le dernier bloc ECHO Variables %Username%
    n'affichait rien dans Path.txt. En fait là aussi il faut des guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ECHO Bureau : "%Bureau%"
    ECHO Documents : "%Documents%"
    [...]
    Merci encore

  8. #8
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Je ne suis pas sûr d'avoir compris la question, si s'en est une. Mais, pour info, les guillemets ne sont pas indispensables à l'affichage du contenu des variables dont tu parles.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    C'est vrai, pas besoin.

    Mais c'est bizarre, j'ai testé aujourd'hui au boulot (xp) et les variables ne s'affichaient pas.
    Sur un vista, de même, on me signale que c'est également le cas, pourtant le contenu de la clé semble être tout aussi exploitable (swreg query) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    SteelWerX Registry Console Tool 3.0
    Written by Bobbi Flekman 2006 (C)
    
    HKEY_CURRENT_USER\software\microsoft\windows\currentversion\explorer\shell folders
       !Do not use this registry key   REG_SZ            Use the SHGetFolderPath or SHGetKnownFolderPath function instead
       Local AppData   REG_SZ            C:\Users\xxx\AppData\Local
       My Video   REG_SZ            C:\Users\xxx\Videos
       AppData   REG_SZ            C:\Users\xxx\AppData\Roaming
       My Pictures   REG_SZ            C:\Users\xxx\Pictures
       Desktop   REG_SZ            C:\Users\xxx\Desktop
       History   REG_SZ            C:\Users\xxx\AppData\Local\Microsoft\Windows\History
       NetHood   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Network Shortcuts
       Cookies   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Cookies
       Favorites   REG_SZ            C:\Users\xxx\Favorites
       SendTo   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\SendTo
       Start Menu   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Start Menu
       My Music   REG_SZ            C:\Users\xxx\Music
       Programs   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Start Menu\Programs
       Recent   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Recent
       CD Burning   REG_SZ            C:\Users\xxx\AppData\Local\Microsoft\Windows\Burn\Burn
       PrintHood   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Printer Shortcuts
       Startup   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Start Menu\Programs\Startup
       Administrative Tools   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Start Menu\Programs\Administrative Tools
       Personal   REG_SZ            C:\Users\xxx\Documents
       Cache   REG_SZ            C:\Users\xxx\AppData\Local\Microsoft\Windows\Temporary Internet Files
       Templates   REG_SZ            C:\Users\xxx\AppData\Roaming\Microsoft\Windows Photo Gallery\Windows\Templates
       Fonts   REG_SZ            C:\Windows\Fonts
    c'est d'autant plus étrange que le script initial présenté en début de ce post, et qu'il s'agissait d'optimiser, fonctionnait tout aussi bien sous xp que sous vista

  10. #10
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Citation Envoyé par eZula Voir le message
    Mais c'est bizarre, j'ai testé aujourd'hui au boulot (xp) et les variables ne s'affichaient pas.
    C'est normale. Tu utilises un utilitaire (SWREG ?) qui n'existe pas par défaut sur une installation Windows, alors que «reg» oui.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    non, sous vista la personne avait pris soin de placer le batch à côté de swreg.exe . Le problème est ailleurs mais franchement au vu de l'interprétation suivante (avec reg query tout court) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
        xxx>if exist Path.txt del Path.txt
    
        xxx>FOR %p IN (Desktop "Bureau" "Personal=Documents" "Programs=MenuDemarrerPrograms" "Startup=Demarrage" "Start Menu=MenuDemarrer" "Favorites=Favoris" "Local AppData=LocalAppData") DO (FOR /F "tokens=1,* delims==" %i IN ('echo %~p') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Desktop') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') DO (SET =%G ) )
    
        xxx>(SET =C:\Users\xxx\Desktop )
        La syntaxe de la commande est incorrecte.
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Bureau') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Bureau"') DO (SET =%G ) )
        Erreur : Erreur : le système n'a pas trouvé la clé ou la valeur de Registre spécifiée.
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Personal=Documents') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') DO (SET Documents=%G ) )
    
        xxx>(SET Documents=C:\Users\xxx\Documents )
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Programs=MenuDemarrerPrograms') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Programs"') DO (SET MenuDemarrerPrograms=%G ) )
    
        xxx>(SET MenuDemarrerPrograms=C:\Users\xxx\AppData\Roaming\Microsoft\Windows )
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Startup=Demarrage') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Startup"') DO (SET Demarrage=%G ) )
    
        xxx>(SET Demarrage=C:\Users\xxx\AppData\Roaming\Microsoft\Windows )
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Start Menu=MenuDemarrer') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Start Menu"') DO (SET MenuDemarrer=%G ) )
    
        xxx>(SET MenuDemarrer=REG_SZ )
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Favorites=Favoris') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Favorites"') DO (SET Favoris=%G ) )
    
        xxx>(SET Favoris=C:\Users\xxx\Favorites )
    
        xxx>(FOR /F "tokens=1,* delims==" %i IN ('echo Local AppData=LocalAppData') DO (FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%i"') DO (SET %j=%G ) ) )
    
        xxx>(FOR /F "tokens=3 delims= " %G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Local AppData"') DO (SET LocalAppData=%G ) )
    
        xxx>(SET LocalAppData=REG_SZ )
    
        xxx>(
        ECHO Variables xxx 
        ECHO.
        ECHO Bureau : "" 
        ECHO Documents : "C:\Users\xxx\Documents" 
        ECHO MenuDemarrerPrograms : "C:\Users\xxx\AppData\Roaming\Microsoft\Windows" 
        ECHO Demarrage : "C:\Users\xxx\AppData\Roaming\Microsoft\Windows" 
        ECHO MenuDemarrer : "REG_SZ" 
        ECHO Favoris : "C:\Users\xxx\Favorites" 
        ECHO LocalAppData : "REG_SZ"
        ) 1>>Path.txt
    
        xxx>Notepad Path.txt

    j'avoue ne plus trop comprendre. Apparemment en mettant un espace à la place de la tabulation dans FOR /F "tokens=3 delims= " %%G on arrive à l'affichage ci-dessus. Avec la tabulation aucune variable n'est affichée. Je ne saisis pas le problème, déjà ce "Desktop "Bureau" au lieu de "Desktop=Bureau" dans la boucle initiale... tu as une idée de ce qui peut bloquer ?

  12. #12
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Le séparateur est une tabulation, si tu utilises un espace le résultat sera incorrect.

    Essaies ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    set prm="Desktop=Bureau" "Personal=Documents" "Programs=MenuDemarrerPrograms" "Startup=Demarrage" "Start Menu=MenuDemarrer" "Favorites=Favoris" "Local AppData=LocalAppData"
    for %%p in (%prm%) do (
    for /f "tokens=1,* delims==" %%i in ('echo %%~p') do (
    FOR /F "tokens=3 skip=3 delims=	" %%g in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "%%i"') do (
    echo %%j=%%g)))
    pause
    Mais attention! Assure-toi que le fichier est bien enregistré au format ANSI.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Salut,

    impossible de comprendre pourquoi ça ne marche pas sur un vista... finalement j'ai pondu ce code qui a l'air de bien fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FOR %%A IN (
          HKCU
          HKLM
          ) DO (SWREG QUERY "%%A\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" >> ShellFolders.txt)
    GREP "^   " ShellFolders.txt | SED "s/^[ \t]*/SET /g;s/[ \t]*REG_SZ[ \t]*/=/g" > ShellFolders.bat
    CALL ShellFolders.bat
    Merci pour ton aide

  14. #14
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    À ce moment-là, autant faire un export et revoir sa copie, plutôt que de passer par «grep» ou «sed». Mais si comme ça, ça fonctionne et que ça te convient, laisse.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Oui je vais laisser en l'état, n'ayant pas recours à grep et sed spécifiquement pour ce tronçon de batch. Comme tu dis j'ai préféré revoir la copie en abandonnant ces variables %Bureau%, %Documents%, etc au profit de ce qui existe déjà et ne mérite finalement peut être pas d'être réinventé.

    En revanche, rien n'est perdu ici, j'aurais appris à utiliser ce type de structure http://www.developpez.net/forums/d71...s/#post4177031 en tableau qui est très pratique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CKEditor] optimisation liste variables ckeditor
    Par unix_2009 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 23/10/2012, 16h16
  2. Extraction variables base de données
    Par olfa_bl dans le forum Android
    Réponses: 0
    Dernier message: 24/04/2012, 13h22
  3. Réponses: 5
    Dernier message: 11/08/2011, 09h08
  4. Optimisation avec Variables Abstraites
    Par medchok dans le forum MATLAB
    Réponses: 2
    Dernier message: 01/12/2008, 22h08
  5. Probleme d'optimisation à plusieurs variables
    Par arabimouh dans le forum MATLAB
    Réponses: 3
    Dernier message: 30/01/2008, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo