Entwickler-Ecke
Sonstiges (.NET) - Datei über Kommandozeile (Dos) einlesen
sheroco - Mi 09.03.11 18:29
Titel: Datei über Kommandozeile (Dos) einlesen
Hallo. Ich würde gerne über die Kommandozeile eine Text-Datei einlesen.
Hab in der suche dazu leider nichts finden können, falls es dazu doch schon etwas gibt, das ich übersehen haben, bitte verschieben :)
also wenn ich in dos bin:
C:\Users\...\Documents\Visual Studio 2010\Projects\...\...\bin\Debug
dann will ich mit dem befehl "programm textdatei" die textdatei einlesen die sich auch debug ordner befindet.
ihr hoffe ihr könnt mir da etwas weiterhelfen.
mfg
Moderiert von
Kha: Topic aus C# - Die Sprache verschoben am Mi 09.03.2011 um 18:57
3marci - Mi 09.03.11 18:37
Das ist zwar das falsche Forum aber egal^^
Den Parameter musst du in deiner Main-Methode auslesen... z.B.
C#-Quelltext
1:
| static void Main(string[] args) |
Den Dateipfad kannst du dann, zumindest in der Main-Methode, per args[0] auslesen bzw. wieder per Parameter über den Konstruktor weitergeben.
Dementsprechend musst du den Konstruktor deiner Form anpassen, so dass der den Pfad als string erhalten kann.
Th69 - Mi 09.03.11 18:44
Hallo sheroco,
was ist dir denn genau unklar bzw. was für eine konkrete Frage hast du denn?
Zum Auswerten der Kommandozeilenparameter einfach das im Main übergebene String-Array auswerten:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| void Main(string [] args) { if (args.Length > 0) { string filename = args[0]; } } |
Und zum Einlesen der Datei schau dir mal die
File-Klasse [
http://msdn.microsoft.com/de-de/library/system.io.file%28v=vs.80%29.aspx] an, z.B. die statischen Methoden ReadAllText bzw. ReadAllLines.
sheroco - Mi 09.03.11 19:10
@3marci
wusste leider nicht in welches forum ich es posten sollte, aber bitte bei bedarf verschieben.
wenn ich das richtige verstehe wird über das (string[] args) nur die parameter, also in meinem fall "textdatei" ausgelesen?
edit: ok gerade getestet: das hab ich mal verstanden :)
@th69
mir ist unklar wie ich das überhaupt angeh. das einzige was ich weiß das ich das über das string array der main methode mach.
für mich ist es auch schwierig nachzuvollziehen, da ich ja das programm in vb nicht debuggen/testen kann und ich so nicht sehen kann
welchen stringwert zb filename hat.
mit dem der ReadAllText Methode könnt ich schon etwas anfangen, mein Problem ist nur die Verbindung C# Programm - Eingabekommando,
was mir halt noch nicht ganz klar ist.
mfg
Th69 - Mi 09.03.11 19:23
Hallo,
du meinst sicherlich "im VS (Visual Studio)", oder?
Zu Testzwecken kannst du in den Projekteigenschaften auch feste Kommandozeilenparameter eintragen (unter "Debuggen" / "Befehlszeilenargumente") und dann ganz normal dein Programm debuggen. Evtl. noch das Arbeitsverzeichnis (Working Directory) richtig einstellen, damit er die externe Datei auch findet.
3marci - Mi 09.03.11 19:29
Ich hab das früher immer so gemacht, dass ich, wenn ich einen Wert wissen wollte, an der entsprechende Stelle ein System.Windows.Forms.MessageBox.Show(args[0]); eingefügt habe.
Wenn du dir nicht sicher bist was z.B. args[0] ausgibt kannst du das so sehr schnell herausfinden.
sheroco - Mi 09.03.11 19:42
ja mit visual studio
ahhh, ich habs ja gewusst das es da sowas gibt, wo man den parameter eintragen und dann debuggen kann :)
mein nächstes problem ist jetzt nun, das ja z.B die ReadAllText Methode einen Pfad angegeben haben will,
nur wie sag ich ihm das das die Datei im Arbeitsverzeichnis (also wo sich auch die *.exe gefindet) liegt.
wenn ich also z.b den ordner auf einen anderen pc kopiere, soll das programm immer noch funktionieren (vorausgesetzt es befindet sich halt die datei im ordner die eingelesen wird).
@3marci ja stimmt, so kann man es natürlich auch machen :)
mfg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!