.BAT : "trop de paramètres de ligne de commande" [Résolu/Fermé]

Signaler
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
Bonjour,

J'essaye d'inscrire une clef dans le registre avec une variable pour le lancement d'un programme au démarrage. Voici le code :
@Echo OFF
For /F "tokens=2,*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Clef registre" /v Path 2^>NUL ^| findstr REG_') do (set VARIABLE="%%b") >NUL 2>&1

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Lancement" /t REG_SZ /d "%VARIABLE%\Lancement.exe" /f

Seulement, du fait de la VARIABLE, j'obtiens le message d'erreur "trop de paramètres de ligne de commande".

Y aurait-il un moyen de contourner le problème ?

Merci.

3 réponses

Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
21 juin 2021
4 406
Bonjour,

On va commencer par le début, qu'obtiens-tu comme résultat dans la variable %%b ?

Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
Bonjour,

La variable %%b est bonne, elle renvoi le bon chemin à utiliser.
J'ai fait plusieurs tests et il est apparu que la variable bloque l'inscription dans le registre.
Si je supprime la variable, la commande s'exécute parfaitement.
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
21 juin 2021
4 406
Est-ce que tu as essayé d'échapper les %% de ta variable ?
Bonjour, ça veut dire quoi "échapper les %%" de la variable ?

Merci
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
21 juin 2021
4 406
Apparemment l'aide la commande REG ADD indique qu'il faut échapper les variables comme ceci :
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Lancement" /t REG_SZ /d "^%VARIABLE^%\Lancement.exe" /f 

Certains caractères spéciaux sont interprétés d'une certaine manière par certaines commandes, pour éviter ceci on utilise des caractères d'échappement, comme ^

Voici la liste complète des caractères d'échappement :
https://www.robvanderwoude.com/escapechars.php
Bonjour,

J'ai testé les recommandations, mais cela ne fonctionne pas.
J'ai essayé avec "^" un peu partout dans la variable, mais cela rend la variable inutilisable.
J'ai essayé aussi avec des doubles "%%" (comme indiqué dans le lien), mais même problème : la variable ne fonctionne plus (l'inscription se fait, mais le chemin n'est pas repris).
Y aurait-il une manière d'isoler la variable ?
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
21 juin 2021
4 406
Je me suis décidé à tester sur ma machine et ça marche très bien :

@echo off
setlocal enableextensions disabledelayedexpansion

For /F "tokens=2,*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Martin Prikryl\WinSCP 2\DragExt" /v Enable 2^>NUL ^| findstr REG_') do (set VARIABLE=%%b)

echo ###%variable%###

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Lancement" /t REG_SZ /d "%VARIABLE%\Lancement.exe" /f
timeout /t 2

Dans l'invite de commandes ça ne fonctionne pas comme il faut, mais dans un fichier .bat oui.



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
Bonjour,

Merci pour le test. J'ai trouvé d'où venait le problème en comparant : il fallait retirer les "" qui entoure la VARIABLE=%%b

Ce n'était pas grand chose, mais il y avait bien un problème du côté de la variable.

Merci de m'avoir permis de trouver le problème !