Problem mit Commandline
-
Hallo !
Ich stehe gerade auf dem Schlauch mit einem Commandline Problem.
Die Commandline sieht wie folgt aus:c:\myfile.exe -abc:c:\test\temp\folder\test.dat -f
Bisher hatte ich nur die Commandline ohne den zusätzlichen Parameter "-f". Und die habe ich so ausgelesen:
/* sCmd ist vom Typ CString und enthält die ersten 5 Zeichen der Variable m_lpCmdLine (Commandline) */ if (sCmd == "-abc:") { // ... } elseif (sCmd == "-def:") { // ... } // ...
Die Datei konnte ich dann bequem an eine Funktion übergeben:
ArbeiteMitDatei(&m_lpCmdLine[5]);
Nun habe ich aber noch den letzten Parameter "-f", der ja nicht mehr zum Dateinamen gehört und der auch vorangestellt sein kann.
Hat jemand eine Idee wie ich die Commandline korrekt und sinnvoll parsen kann ?
-
hallo,
ich kenn das nur so :
int main(char* argv[])// in argv sind die übergebenen parameter { // return 0; }
Mfg TaccoGo
-
Du solltest wohl nach Leerzeichen trennen und dann jeden Command einzeln verarbeiten:
CString s(m_lpCmdLine), sCmd; int nPos = -1, nOldPos = -1; do { // Leerzeichen finden nPos = s.Find( " ", nOldPos + 1 ); // vom letzten Leerzeichen bis zum neuen Leerzeichen ist ein Command if( nPos >= 0 ) sCmd = s.Mid( nOldPos + 1, nPos ); // Falls kein Leerzeichen (mehr) da, dann ist es entweder nur ein // Parameter oder es ist das letzte else sCmd = s.Mid( nOldPos ); // hier hat sCmd einen Command und will verarbeitet werden nOldPos = nPos; }while( nPos >= 0 );