2010-02-09 3 views
1

Je dois pouvoir séparer le chemin et les arguments exécutables dans une commande.Chemin d'accès et arguments exécutables divisés

Windows gère facilement les éléments suivants:

"notepad.exe C: \ testfile.txt"

"notepad c: \ testfolder \ versioninfo.txt"

« C: \ Windows \ notepad.exe » "dossier C: \ test \ versioninfo.txt"

rundll "C \ Windows \ de"

de Quelqu'un a un morceau de code pour analyser ces chaînes?

Merci.

+0

Avez-vous besoin de diviser les chaînes arbitraires ou avez-vous besoin de traiter les arguments fournis à votre demande? –

+0

Je dois gérer des commandes arbitraires. – SharpAffair

Répondre

0

Je l'ai utilisé quelque chose comme ça dans le passé:

char* lpCmdLine = ...; 
char* lpArgs = lpCmdLine; 
// skip leading spaces 
while(isspace(*lpArgs)) 
    lpArgs++; 
if(*lpArgs == '\"') 
{ 
    // executable is quoted; skip to first space after matching quote 
    lpArgs++; 
    int quotes = 1; 
    while(*lpArgs) 
    { 
     if(isspace(*lpArgs) && !quotes) 
      break; 
     if(*lpArgs == '\"') 
      quotes = !quotes; 
    } 
} 
else 
{ 
    // executable is not quoted; skip to first space 
    while(*lpArgs && !isspace(*lpArgs)) 
     lpArgs++; 
} 
// TODO: skip any spaces before the first arg 
Questions connexes