Autor Beitrag
masterZed
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 23.02.10 11:11 
Die Datei wird so erzeugt!

ausblenden 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 user profile iconChristian S.: Quote- durch C#-Tags ersetzt


Zuletzt bearbeitet von masterZed am Di 23.02.10 11:24, insgesamt 1-mal bearbeitet
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Di 23.02.10 11:20 
Und wie startest du es? Hast du mal den Code-Snipplet von mir versucht?
masterZed Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Di 23.02.10 11:58 
user profile iconmasterZed hat folgendes geschrieben Zum zitierten Posting springen:
gestartet wird das ganze per klick!

Ach ne. Und in deinem Code steht dann so etwas:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 23.02.10 17:32 
obs sorry:)

ja sicher...
ausblenden C#-Quelltext
1:
2:
3:
4:
private void btngen_Click(object sender, EventArgs e)
        {
           Methode();
            }


Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 23.02.10 23:43 
bitte nicht falsch verstehen!

Die Methode die ausgeführt wird ist oben zu finden.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 user profile iconJüThos Tipp mit dem Encoding einmal ausprobiert?
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: 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.