.BAT : "trop de paramètres de ligne de commande"
Résolu
micromega
Messages postés
131
Date d'inscription
Statut
Membre
Dernière intervention
-
micromega Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
micromega Messages postés 131 Date d'inscription Statut Membre Dernière intervention -
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.
A voir également:
- .BAT : "trop de paramètres de ligne de commande"
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- .Txt to .bat ✓ - Forum Logiciels
- Txt to bat ✓ - Forum Autoit / batch
- Bouchou ka bat traduction ✓ - Forum traduction
3 réponses
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 %%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...
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 :
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
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 :
Dans l'invite de commandes ça ne fonctionne pas comme il faut, mais dans un fichier .bat oui.
@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.