In datei schreiben?

Hallo.
Habe schon die Boardsuche bnutztz, aber nichts gefunden.
Also, ich möchte in VB6, dass etwas eine Textdatei (bzw. bat) datei geschreiben wird.
Das brauche ich für ein Programm, womit der User sich eingene Batch dateien erstellen kann :wink:
Also also „Batch-Code“ würde das so aussehen:

echo {DER INHALT, NATÜRLICH OHNE DIE KLAMMERN} >> name.bat

gibt es so was auch für vb6?
danke im vorraus!

Hallo darkkulli.

Du könntest den folgenden Code verwenden um in eine Text-Datei zu schreiben:

Open "C:\Test.txt" For Output As #1
 Write #1, "Daten in Zeile1"
 Write #1, "Daten in Zeile2"
Close #1

Wenn die Datei nicht existiert, wird sie erstellt.

Um aus der Datei zu lesen, kannst Du folgenden Code verwenden:

Dim Variable1 As String
Dim Variable2 As String
Open "C:\Test.txt" For Input As #1
 Input #1, Variable1
 Input #1, Variable2
Close #1

Wenn die Datei nicht existiert, wird ein Fehler ausgelöst.

Schau Dir auch die Hilfe zur Open-Anweisung an (Binary, Append, Random, FreeFile, usw.)

Viele Grüße
Carsten

Hi.
Danke, genauso meinte ich dass x)
Da ich ja, wie gesagt, ein Programm schreiben möchte,
womit man Batch dateien erstellen kann, wäre es gut,
wenn der Inhalt hinten drangehängt würde, nicht das alles gelöscht
und dann wieder neu geschreiben wird :wink:

Und noch so am rande: wie kann ich eine Variable schreiben?
d.H. das er den text in die datei reinschreibt, der in einer variable steht?

Danke :stuck_out_tongue:

Hallo Darkkulli,

ich selbst verwende zum schreiben in eine Datei immer den Befehl Print und nicht write. Der Unterschied besteht darin

Im Gegensatz zur Print #-Anweisung fügt die Write #-Anweisung beim Schreiben in die Datei Kommas zwischen Elementen und Anführungszeichen eingeschlossener Zeichenfolgen ein. Sie brauchen daher in der Liste kein explizites Trennzeichen anzugeben. Die Write #
-Anweisung fügt einen Zeilenumbruchzeichen, d.h. eine Kombination aus Wagenrücklauf und Zeilenvorschub (Chr(13) + Chr(10)), ein, nachdem sie das letzte Zeichen aus der Ausgabeliste in die Datei geschrieben hat.

Wie du nun siehst, eignet sich diese Variante nicht um eine Batch Datei zu erstellen, dann die Daten evtl in der Form vorliegen könnten.

„Echo off“
„cd xyz“

schreibst du die Daten dagegen mit der Print Anweisung, so würde es so ausschauen

Echo off
cd xyz

Wenn du die Datei öffnest so kannst du hintereinander weg die daten schreiben. Sie werden jedesmal an das Ende der Datei gehaengt. Wenn du nun aber die Datei schliesst und sie erneut öffnest mit Output, so wird diese neu erstellt. Willst du Daten anhaengen, so nutze mal die Variante :wink:

public sub WriteFile(Byval sFile as string, vData as string)
on error resume next
dim fNr as byte
fNr=freefile
open sFile for Append as #fNr
print #fNr,vData
close #fNr
end sub

Ein Aufruf könnte dann wiefolgt aussehen

call WriteFile(„c:\Test.bat“,„Echo off“)
call WriteFile („c:\Test.bat“,„cd xyz“)

Möchtest du daten aus dem File lesen so nutze die
Line Input Anweisung

–> Line Input #fNr, vData

Die Daten würden nun in der Variablen vData stehen :wink:
Sofern du vorher die Variable fNr belegt hast und die Datei im Input Modus geöffnet hast.

Daten in eine Variable kannst du wiefolgt schreiben

Variablenname = Daten

Bsp

Dim a as string 'Zeichenfolge
dim b as Integer 'Zahl vom Typ Integer

a=„Hallo Welt“
b=1243

Ich hoffe ich konnte dir das alles ein wenig naeher bringen:smile:

MfG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Anno74,
Mit deinen erklärungen konnte ich sehr viel Anfangen, danke.
Allerdings gibt es noch eine frage zu den Variabeln:

Festlegen tue ich sie mit
dim xyz as String
xyz = „ja hallo erstmal“
Aber wie gebe ich sie nun aus?

(…)
content = Beispieltext
Call WriteFile(„c:\Test.bat“, „echo {DER INHALT DER VARIABLE content}“)

Ich hoffe du / ihr könnt mir auch da weiterhelfen,
weil ich dort noch sehr große Probleme habe.

Mit freundlichen Grüßen,
darkkulli

Hallo,
irgendwie verstehe ich Dein Problem nicht so ganz, ich habe das mal in ein Programm gepackt.

Öffne einfach ein neues Projekt und füge den folgenden Code ein, Steuerelemente brauchst Du nicht.

Option Explicit

Private Sub Form\_Load()
 Dim pfd As String
 Dim na As String
 Dim strg As String
 Dim ff As Integer
 Dim eFlag As Boolean
 Form1.Hide
 pfd = App.Path
 If Right(pfd, 1) "\" Then
 pfd = pfd & "\"
 End If
 While na = ""
 na = InputBox("Gib der Batchdatei bitte einen Namen" & vbNewLine & " und lass die Endung weg, die trage ich ein." & vbNewLine & "Die Datei darf schon existieren.", "Namen eingeben")
 Wend
 na = pfd & na & ".bat"
 ff = FreeFile
 Open na For Append As #ff
 While eFlag = False
 strg = InputBox("Gib eie Befehlszeile ein." & vbCrLf & "Zum Beenden gib nichts ein!", "Eingebe der befehlszeilen")
 If strg "" Then
 Print #ff, strg
 Else
 eFlag = True
 End If
 Wend
 Close #ff
 End
End Sub

Das ist alles. Wenn das Batchfile noch nicht existiert, wird es angelegt, existiert es schon, werden Zeilen angehängt.

Gruß, Rainer