C# - Ausgabe Und Pfad
#16
geschrieben 11. Oktober 2006 - 09:27
Anzeige
#17
geschrieben 11. Oktober 2006 - 09:32
#18
geschrieben 22. August 2008 - 10:15
ich will mittels dieser Consolen Ausgabe WinRar ansteuern.... und dort eingaben via Console übermitteln....
sieht dann so aus :
proc.StartInfo.FileName = "D:\\Programme\\WinRAR\\rar"
soweit so gut...
der befehl komplett sieht dann aber so aus :
rar vb d:\scan\Tree1\*.rar >c:\test.lst
also die parameter vb mit dem Pfad usw geben den Rar inhalt in einer Liste aus.... das problem dabei ist jetz das diese parameter angaben d:\scan intern mit d:\\scan übersetzt werden und auch so an die Console gegeben werden....dadurch kann er die Datei nicht finden....
rar vb d:\\scan\\tree1\\*.rar >c:\\test.lst macht dann C# draus.....
selbst wenn ich dieses @ nutze kommt das selbe ergebniss raus....
proc.StartInfo.FileName = "D:\\Programme\\WinRAR\\rar" +" vb " + @"D:\Scan2\Support\prog\casts\*.rar" + @" >c:\Test.lst";
geht auch nicht.... ich kann sozusagen nicht die internen parameter übermitteln.... weiß da einer nen ansatz wie ich das umgehen kann?
danke
#19
geschrieben 22. August 2008 - 10:38
also:
@\"D:\Scan2\Support\prog\casts\*.rar"
Arbeit ist Energie
und Energie soll man sparen
#20
geschrieben 22. August 2008 - 10:56
#21
geschrieben 22. August 2008 - 11:21
Zitat
\xdddd Zeichen (dddd steht für den Hex-Code des Zeichens)
\udddd Unicode-Zeichen dddd (Hex-Code)
entweder es gibt mit nem doppelten backslash \\ oder probier einfach mal die codes aus.
mehr weiß ich dann aber nicht mehr
Arbeit ist Energie
und Energie soll man sparen
#22
geschrieben 22. August 2008 - 12:28
mein erster Beitrag ..hoffe ich kann damit helfen.
Hab einfach mal das in kurzform umgesetzt was ihr hier so besprecht.
Ist kein mustercode und auch bestimmt net mit tollen namen, aber es funtzt.
(Fertiges Formular vorrausgesetzt)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace WindowsFormsApplication3 { public partial class Form1 : Form { String pathtowinrar; String pathtofile; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); pathtowinrar = ofd.FileName; textBox1.Text = pathtowinrar; } private void button2_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); pathtofile = ofd.FileName; textBox2.Text = pathtofile; } private void button3_Click(object sender, EventArgs e) { Process winrar = new Process(); winrar.StartInfo.FileName = pathtowinrar; winrar.StartInfo.Arguments = " vb " + "\"" + pathtofile + "\""; winrar.StartInfo.RedirectStandardOutput = true; winrar.StartInfo.UseShellExecute = false; winrar.Start(); StreamReader output = winrar.StandardOutput; String ausgabe=output.ReadToEnd(); MessageBox.Show(ausgabe); } } }
#23
geschrieben 22. August 2008 - 12:41
hier entsteht der fehler :
also der Compiler setzt für jedes "\" ein zweites "\\" der interne wert ist somit dann :
vb \"D:\\Scan\\Tree1\\Neuer Ordner\""
nun kann aber WinRar damit wieder nix anfangen, da dort der Pfad Dos mässig verabeitet wird.... also als Consolenbefehl....
Die Syntax der RAR-Kommandozeile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Syntax
RAR <Befehl> [ -<Schalter> ] <Archiv> [ <@Dateilisten...> ]
[ <Dateien...> ] [ <Zielverzeichnis\> ]
v[t,b] Den Inhalt eines Archivs ausführlich auflisten [technisch].
Die Dateien werden im folgenden Format angezeigt: voller
Verzeichnispfad, Dateikommentar, ungepackte und gepackte Größe,
Kompressionsrate, Datum und Zeit der letzten Änderung,
Dateiattribute, CRC-Prüfsumme, Kompressionsmethode und minimale
RAR-Version, die zum entpacken benötigt wird. Wird das "t"
mit angegeben, werden optionale technische Informationen
(Betriebssystem, unter dem die Datei gepackt wurde; Angabe, ob
solide oder nicht; Alte Version oder nicht) angezeigt.
Der Buchstabe "b" zwingt RAR, nur Dateinamen ohne weitere
Informationen auszugeben.
Um den Inhalte aller Archiv-Volumen auf einmal zu sehen,
verwenden Sie ein Stern ("*") anstelle der Endung der
Archivdatei oder benutzen Sie den Schalter "-v".
Beispiel:
1) Schreibe den technisch aufgelisteten Archivinhalt
in eine Datei
rar vt bambam >bambam.lst
2) Liste den Inhalt des Archivs tutorial.rar auf (nur die
Dateinamen)
rar vb tutorial
somit muss der aufruf für Winrar so aussehen in einer CMD
rar vb "d:\scan\Tree1\*.rar >c:\test.lst
aber C# macht leider aus jedem \ eben \\ intern.... und das gibt er dann an die Cmd weiter
dort kommt dann
rar vb "d:\\scan\\Tree1\\*.rar >c:\\test.lst
an ... natürlich versteht das WinRar nicht und bringt nen error er könne die Datei nicht finden......
Dieser Beitrag wurde von Nopileos bearbeitet: 22. August 2008 - 12:55
#24
geschrieben 22. August 2008 - 12:58
da brauch auch kein @ oder sonstiges mehr hin...einfach nur das einlesen ausnem filedialog
man brauch auch nichts mehr ersetzen...
#25
geschrieben 22. August 2008 - 13:54
danke dir Subbie
Dieser Beitrag wurde von Nopileos bearbeitet: 22. August 2008 - 14:09
#26
geschrieben 22. August 2008 - 14:11
hier nochmal eine etwas einfacherer art fuer dein problem...
nimmt automatisch alle rars aus einem ordner:
private void button3_Click(object sender, EventArgs e) { methode("C:\\test\\", "C:\\Program Files\\WinRAR\\rar.exe"); } public void methode(String OrdnerMitRars, String PfadZuWinRAR) { DirectoryInfo di = new DirectoryInfo(OrdnerMitRars); FileInfo[] fi = di.GetFiles("*.rar"); foreach(FileInfo file in fi) { Process winrar = new Process(); winrar.StartInfo.FileName = PfadZuWinRAR; winrar.StartInfo.Arguments = " vb " + "\"" + file.FullName + "\""; winrar.StartInfo.RedirectStandardOutput = true; winrar.StartInfo.UseShellExecute = false; winrar.Start(); StreamReader output = winrar.StandardOutput; String ausgabe = output.ReadToEnd(); MessageBox.Show(ausgabe); } }
Dieser Beitrag wurde von subbie bearbeitet: 22. August 2008 - 14:12
#27
geschrieben 25. August 2008 - 12:39
Zitat (subbie: 22.08.2008, 15:11)
hier an der stelle liegt gerade noch mein problem... durch die Kombination "\"" wird die compiler interne "\\" methode gestoppt oder wie soll ich das verstehen?
der volle befehl ist ja
rar vb d:\Test\*.rar >c:\test.lst
wie muss dann der komplette befehl aussehen? test gerade alle möglichkeiten durch
>c:\Test.lst ist quasi für die ausgabe in einer liste in einer Datei.
#28
geschrieben 26. August 2008 - 09:04
Zitat (Nopileos: 25.08.2008, 13:39)
der volle befehl ist ja
rar vb d:\Test\*.rar >c:\test.lst
wie muss dann der komplette befehl aussehen? test gerade alle möglichkeiten durch
>c:\Test.lst ist quasi für die ausgabe in einer liste in einer Datei.
"\"" ergibt im String einfach ein doppeltes Anführungszeichen ". Das \" nennt man Escapen. Zeichen, die in C# escaped werden können, findest du hier: http://blogs.msdn.com/csharpfaq/archive/20...3/12/88415.aspx
In file.FullName steht bereits ein weiterverarbeitbarer Pfadstring. Das "\"" sorgt nur dafür, dass vor dem String und nach dem String ein Anführungszeichen gesetzt wird.
Also ergibt sich z.B. aus
winrar.StartInfo.Arguments = " vb " + "\"" + file.FullName + "\"";folgender String
vb "D:\Test\test.rar"
Gruß,
Stefan
- ← Vb6 Zeilen Aus Texfeld Auslesen, Bearbeiten, Ausgeben
- Programmierung
- Fragen Eines Programmierneulings Bzw. Möchtegerns →