Menu

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

micromega 117 Messages postés lundi 13 avril 2009Date d'inscription 17 avril 2018 Dernière intervention - 6 avril 2018 à 14:24 - Dernière réponse : micromega 117 Messages postés lundi 13 avril 2009Date d'inscription 17 avril 2018 Dernière intervention
- 17 avril 2018 à 10:03
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.
Afficher la suite 

11 réponses

Répondre au sujet
barnabe0057 11891 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 avril 2018 à 23:30
0
Utile
Bonjour,

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

Commenter la réponse de barnabe0057
micromega 117 Messages postés lundi 13 avril 2009Date d'inscription 17 avril 2018 Dernière intervention - 7 avril 2018 à 08:36
0
Utile
7
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.
barnabe0057 11891 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 7 avril 2018 à 14:11
Est-ce que tu as essayé d'échapper les %% de ta variable ?
Bonjour, ça veut dire quoi "échapper les %%" de la variable ?

Merci
barnabe0057 11891 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 9 avril 2018 à 19:40
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 :
http://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 ?
Commenter la réponse de micromega
barnabe0057 11891 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par barnabe0057 le 11/04/2018 à 20:08
0
Utile
1
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.”
micromega 117 Messages postés lundi 13 avril 2009Date d'inscription 17 avril 2018 Dernière intervention - 17 avril 2018 à 10:03
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 !
Commenter la réponse de barnabe0057