Entwickler-Ecke
IO, XML und Registry - schreibe in einer *.bat
masterZed - Mo 22.02.10 16:32
Titel: schreibe in einer *.bat
hi,
wenn ich aus einer Textbox in einer *.bat Datei etwas schreibe und dies dann ausführen möchten, geht es leider nicht, da wohl irgendwelche zeichen drin sind die nicht hin gehören.
Hat das etwas mit der formatierung oder encode zu tun?
Hätte jemand eine Beispiel wie so etwas aussehen könnte, damit das ausführbar ist?
Es soll ein skript werden der sich aus den Benutzer eingaben generieren läst.
vielen Dank
danielf - Mo 22.02.10 16:58
Hallo,
wie erzeugst du den die Datei und wie schaut sie mit dem Notepad aus? Ein kleines Beispiel lief bei mir problemlos:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| string input = "notepad";
FileInfo tempFile = new FileInfo(Path.GetTempFileName() + ".bat");
using (StreamWriter writer = new StreamWriter(tempFile.OpenWrite())) { writer.Write(input); }
Process p = new Process();
p.StartInfo.FileName = tempFile.FullName;
p.Start(); |
Gruß Daniel
JüTho - Mo 22.02.10 16:59
Es ist sehr wahrscheinlich, dass das mit dem Zeichensatz zusammenhängt. Speichere den Text mit einer File.WriteAllText-Überladung mit Encoding und benutze dafür GetEncoding(0) oder GetEncoding(1252) - das sind die wahrscheinlichsten Möglichkeiten.
Gruß Jürgen
masterZed - Di 23.02.10 11:11
Die Datei wird so erzeugt!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| string filenameout = @"c:\test.bat"; FileStream fs = new FileStream(filenameout, FileMode.Create, FileAccess.Write, FileShare.ReadWrite );
StreamWriter sw = new StreamWriter(filenameout); sw.Write("Robocopy " + txtboxQuelle.Text +" \t"+ txtboxziel.Text); sw.close(); |
Im Notpad wird dies richtig angezeigt! und wenn ich es von dort aus als*.bat speichere, dann geht das auch. Nur über den code geht es leider nicht!!!
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
danielf - Di 23.02.10 11:20
Und wie startest du es? Hast du mal den Code-Snipplet von mir versucht?
masterZed - Di 23.02.10 11:26
gestartet wird das ganze per klick!
Werde dein code teste! in erste Linie wollte ich den Fehler bei mir suchen :)
JüTho - Di 23.02.10 11:58
masterZed hat folgendes geschrieben : |
| gestartet wird das ganze per klick! |
Ach ne. Und in deinem Code steht dann so etwas:
C#-Quelltext
1: 2: 3:
| private void myButton_Click(...) { startebatch(); } |
Oder was? Daniel wollte wissen, mit welchen Befehlen innerhalb des Click-EventHandlers du den Start der bat-Datei steuerst. Jürgen
masterZed - Di 23.02.10 17:32
obs sorry:)
ja sicher...
C#-Quelltext
1: 2: 3: 4:
| private void btngen_Click(object sender, EventArgs e) { Methode(); } |
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
JüTho - Di 23.02.10 18:48
Willst du uns auf den Arm nehmen? Es gibt dafür auch noch andere Formulierungen. Damit sind wir doch keinen Schritt weiter. Was wird denn innerhalb von Methode() gemacht? Das ist übrigens eine sehr ausdrucksvolle Bezeichnung für eine Methode. Jürgen
masterZed - Di 23.02.10 23:43
bitte nicht falsch verstehen!
Die Methode die ausgeführt wird ist oben zu finden.
jaenicke - Mi 24.02.10 00:52
Das heißt du startest dann die Batchdatei manuell und nicht aus dem Programm? Und was passiert dann? Hast du mal die beiden Versionen (wo es funktioniert und deine) mit einem Hexeditor oder so verglichen?
Du könntest auch eine solche Datei einmal anhängen, dann sehen wir ja auch woran es liegt.
Und hast du
JüThos Tipp mit dem Encoding einmal ausprobiert?
danielf - Mi 24.02.10 12:02
Wo sollen den die Methode oben sein? "Oben" finde ich nur Funktionen zum speichern... bzw die eine von mir mit Prozess.Start().
Hast du das mal so ausprobiert?
masterZed - Mi 24.02.10 19:16
danke für eure Hilfe! Inzwischen geht es. Es lag an zu vielen "\n" zeichen.
naja wieder was dazugelernt!
danke euch.
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!