WinFuture-Forum.de: C# - Ausgabe Und Pfad - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

C# - Ausgabe Und Pfad

#16 Mitglied ist offline   plichel 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 11. Oktober 2006 - 09:27

ja ok, ich sehs mal ein, dass es ne sache des betriebssystems ist, das den pfad dann entsprechend verarbeiten muss.
0

Anzeige



#17 Mitglied ist offline   TiKu 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 10. Oktober 06
  • Reputation: 0
  • Wohnort:Dresden
  • Interessen:Softwareentwicklung

geschrieben 11. Oktober 2006 - 09:32

So wirklich scheinst Du noch immer nicht verstanden haben wie das mit den Escape-Zeichen funktioniert, aber okay.
0

#18 Mitglied ist offline   Nopileos 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 22. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 10:15

ich hab dabei gerade ein ganz anderes Problem,

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 ;)
0

#19 Mitglied ist offline   lloiser 

  • Gruppe: aktive Mitglieder
  • Beiträge: 92
  • Beigetreten: 13. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 10:38

füge direkt nach dem @ ein \ ein
also:
@\"D:\Scan2\Support\prog\casts\*.rar"

Denken ist Arbeit
Arbeit ist Energie
und Energie soll man sparen
0

#20 Mitglied ist offline   Nopileos 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 22. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 10:56

ne das mit dem @\ geht auch nicht... da wirft er gleich alles durcheinander....
0

#21 Mitglied ist offline   lloiser 

  • Gruppe: aktive Mitglieder
  • Beiträge: 92
  • Beigetreten: 13. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 11:21

Zitat

\\ Umgekehrter Schrägstrich (Backslash)
\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
Denken ist Arbeit
Arbeit ist Energie
und Energie soll man sparen
0

#22 Mitglied ist offline   subbie 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 12. Oktober 06
  • Reputation: 0

geschrieben 22. August 2008 - 12:28

Halloele,

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);
		}


   
	}
}

0

#23 Mitglied ist offline   Nopileos 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 22. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 12:41

winrar.StartInfo.Arguments = " vb " + "\"" + pathtofile + "\"";

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

0

#24 Mitglied ist offline   subbie 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 12. Oktober 06
  • Reputation: 0

geschrieben 22. August 2008 - 12:58

also ich kann nur sagen das es so wie es oben steht funktioniert

da brauch auch kein @ oder sonstiges mehr hin...einfach nur das einlesen ausnem filedialog
man brauch auch nichts mehr ersetzen...
0

#25 Mitglied ist offline   Nopileos 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 22. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 13:54

Alles klar... habs jetz hinbekommen... frag mich gerade wo ich da die ganze Zeit probleme hatte :)

danke dir Subbie :)

Dieser Beitrag wurde von Nopileos bearbeitet: 22. August 2008 - 14:09

0

#26 Mitglied ist offline   subbie 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 12. Oktober 06
  • Reputation: 0

geschrieben 22. August 2008 - 14:11

bitte bitte...
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

0

#27 Mitglied ist offline   Nopileos 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 22. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 25. August 2008 - 12:39

Beitrag anzeigenZitat (subbie: 22.08.2008, 15:11)

winrar.StartInfo.Arguments = " vb " + "\"" + file.FullName + "\"";


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.
0

#28 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 26. August 2008 - 09:04

Beitrag anzeigenZitat (Nopileos: 25.08.2008, 13:39)

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.


"\"" 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
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0