Laden...

Dateiname von Parameter trennen

Erstellt von Das Schaf vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.944 Views
D
Das Schaf Themenstarter:in
10 Beiträge seit 2006
vor 18 Jahren
Dateiname von Parameter trennen

Hallo an alle.

Ich habe ein kleines Problem. Ich versuche seit geraumer Zeit, Strings in denen Aufrufe von Dateien stehen mehr oder weniger zu parsen.

Genauer gesagt, ich möchte den Dateinamen von den Parametern trennen.

Aus

c:\test\programm1.exe -a -c -c:\test

soll z.B.

c:\test\programm1.exe

und

-a -c -c:\test

werden.

An der Problematik hänge ich mich völlig auf. Gerade folgende Sonderfälle bringen mich an den Rand der Verzweiflung:

  1. Aufrufe ohne Pfad

Bsp.: programm1.exe -a -c -c:\test

  1. Aufrufe mit Leerzeichen ohne Anführungszeichen

Bsp.: c:\meine dateien\test.exe -a -c

Ich habe mich in der Klassenbibliothek totgesucht aber nichts gefunden, was mir das erleichtern könnte und mein Code zu dem Thema ist vermute ich mal viel zu kompliziert und dazu fehlerträchtig. Vielleicht geht sowas mit regulären Ausdrücken aber die sind mir noch sehr schleierhaft.

Vielleicht kann mir ja einer von euch weiterhelfen.

Vielen Dank schonmal.

6.862 Beiträge seit 2003
vor 18 Jahren

Wenn die Dateiendung bei der ausfühbaren Datei immer angegeben ist, suchst du einfach nach dem ersten Leerzeichen nach dem ersten Punkt und schon haste die Stelle wo du die Strings splitten kannst. 🙂 Oder gibts noch mehr Sonderfälle?

Baka wa shinanakya naoranai.

Mein XING Profil.

1.549 Beiträge seit 2004
vor 18 Jahren

schau dir mal Substring() und IndexOf() an und ich würde das "-" nehmen

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

D
Das Schaf Themenstarter:in
10 Beiträge seit 2006
vor 18 Jahren

Vielen Dank für die Kommentare.

Original von talla
Wenn die Dateiendung bei der ausfühbaren Datei immer angegeben ist, suchst du einfach nach dem ersten Leerzeichen nach dem ersten Punkt und schon haste die Stelle wo du die Strings splitten kannst. 🙂 Oder gibts noch mehr Sonderfälle?

Sorry, die Variante kann natürlich auch vorkommen. Das zu überprüfen reicht also leider nicht. 🙁

Original von S.H.-Teichhof
schau dir mal Substring() und IndexOf() an und ich würde das "-" nehmen

Das Problem ist, daß ich die Aufrufe nicht baue. Das Programm analysiert alle Aufrufe, die bei Rechnerstart stattfinden, da kann alles mögliche passieren, ob es nun /, - oder gar Parameter ohne Einleitung sind, z.B.:

C:\test.exe D:\test.txt

Die können dann natürlich auch noch gemixt sein. X(

6.862 Beiträge seit 2003
vor 18 Jahren

Dann hilfts wohl nicht🙂

Erstmal alle Fälle die auftreten können zusammenzutragen, für jeden Fall ne Vorgehensweise zum Trennen entwickeln(nur mal gedanklich, noch nicht an den Code denken) , schaun ob sich Fälle nicht gegenseitig beeinflussen, bzw. ausschließen. Und dann müsste es ein leichtes sein die einzelnen Fälle abzuarbeiten und zu implementieren.

Baka wa shinanakya naoranai.

Mein XING Profil.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Das Schaf,

nur mal so am Rande. Du kannst nicht alle genannten Fälle sinnvoll interpretieren. In "c:\meine dateien\test.exe -a -c" ist einfach nicht klar, ob das Programm "c:\meine" mit dem Dateiparameter "dateien\test.exe" gemeint ist oder das Programm "c:\meine dateien\test.exe" ohne Dateiparameter.

Man muss also eine Festlegung treffen wie z.B.: es wird bei jedem Leerzeichen getrennt, außer wenn es zwischen Anführungsstrichen steht.

herbivore

D
Das Schaf Themenstarter:in
10 Beiträge seit 2006
vor 18 Jahren

Original von herbivore
Hallo Das Schaf,

nur mal so am Rande. Du kannst nicht alle genannten Fälle sinnvoll interpretieren. In "c:\meine dateien\test.exe -a -c" ist einfach nicht klar, ob das Programm "c:\meine" mit dem Dateiparameter "dateien\test.exe" gemeint ist oder das Programm "c:\meine dateien\test.exe" ohne Dateiparameter.

Man muss also eine Festlegung treffen wie z.B.: es wird bei jedem Leerzeichen getrennt, außer wenn es zwischen Anführungsstrichen steht.

herbivore

Danke, das habe ich mittlerweile auch befürchtet. Ich werde versuchen, das Problem auf die häufigsten Fälle einzudämmen. Anders wird es sonst wohl leider nix. 🙁

Aber vielen Dank für Eure Hilfe. 👍