2010-04-15 5 views
11

Je ne peux pas effectuer d'appels système avec des espaces dans les noms et les paramètres. Par exemple:Windows C appel système avec des espaces dans la commande

system("c:\\program files\\something\\example.exe c:\\my files\\example.txt"); 

J'ai essayé d'échapper de toutes les manières que je sais, et rien ne fonctionne. J'ai essayé:

system("\"c:\\program files\\something\\example.exe\" \"c:\\my files\\example.txt\""); 

et

system("c:\\program^ files\\something\\example.exe c:\\my^ files\\example.txt"); 

Ni travail. Je reçois toujours 'c: \ program' n'est pas une commande interne ou externe reconnue

Cela me rend vraiment fou ... J'ai besoin d'appeler et de passer des paramètres qui contiennent des espaces. Je ne peux pas utiliser la notation courte pour des raisons que je ne vais pas entrer dans.

J'ai essayé avec 'cite au lieu de "citations, ne fonctionne toujours pas. Je l'ai essayé de mettre des guillemets autour de la chose et des citations autour des espaces et qui ne fonctionne pas.

Est-ce que quelqu'un sait comment pour le faire correctement

Répondre

25

Edit:? OK, pensé à elle en entrant dans l'appel system(): vous avez besoin d'un ensemble supplémentaire de guillemets autour de la chose en raison du fait qu'il appelle en interne cmd/cyourinput

Alors cela fonctionne pour moi:

system("\"\"c:\\program files\\internet explorer\\iexplore.exe\" \"www.stackoverflow.com\"\""); 

Un peu de désordre, non?

+0

Ooops J'ai été specaping slashes. La raison pour laquelle j'en ai besoin pour travailler avec le système est que j'utilise aussi _open etc. – myforwik

+0

Édité - essayez les guillemets doubles. – EMP

+0

+1 Les guillemets doubles fonctionnent pour moi –

Questions connexes