Autor |
Beitrag |
masterZed
      
Beiträge: 39
|
Verfasst: Mo 22.02.10 16:32
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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 39
|
Verfasst: 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
Zuletzt bearbeitet von masterZed am Di 23.02.10 11:24, insgesamt 1-mal bearbeitet
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Di 23.02.10 11:20
Und wie startest du es? Hast du mal den Code-Snipplet von mir versucht?
|
|
masterZed 
      
Beiträge: 39
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Di 23.02.10 11:58
|
|
masterZed 
      
Beiträge: 39
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 39
|
Verfasst: Di 23.02.10 23:43
bitte nicht falsch verstehen!
Die Methode die ausgeführt wird ist oben zu finden.
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
      
Beiträge: 39
|
Verfasst: 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.
|
|