.BAT : "trop de paramètres de ligne de commande"
Résolu
micromega
Messages postés
141
Statut
Membre
-
micromega Messages postés 141 Statut Membre -
micromega Messages postés 141 Statut Membre -
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 :
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.
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
-
Bonjour,
On va commencer par le début, qu'obtiens-tu comme résultat dans la variable %%b ?
-
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.-
-
La variable me renvoie le chemin : "C:\Program Files (x86)\Mon dossier". < c'est ça qu'il fallait répondre ?
Le chemin est bon. Je rajoute "\Lancement.exe" à la suite de la variable afin d'inscrire cet exécutable dans le RUN du registre.
La variable seule + extension du chemin = pas de problème (testé en ECHO en en CALL).
Seulement, la réutilisation de la variable dans un REG ADD bloque en me donnant : "trop de paramètres de ligne de commande". < ça je ne comprend pas.
Mes tests ont révélé que le problème vient de "%VARIABLE%". Si je la supprime et pose le chemin tel quel, cela fonctionne (pourtant la variable est bonne puisqu'elle me renvoie le même chemin).
Si j'ai été assez clair... -
-
-
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
-
-
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.