Batch Variable Problem 

Status
Für weitere Antworten geschlossen.

jochenv

Registered +
Registriert
Nov. 2008
Beiträge
148
Hallo Leute,

hier mal was für die alten Hasen ...

ich versuche gerade den Inhalt einer Text-Datei in eine Batch-Variable zu bekommen um diese dort dann weiter zu bearbeiten. Mit zusätzlich einer Übergabe der Commandozeile. Echo nur zum Testen. Und da wo die "?" stehen da fehlt mir die übergabe von Text-Datei in die Variable.


die Text-Datei heist:
Datei.txt

aufruf der Batch:
Batch.bat var1

Batch:
Echo Start der Bachdatei.
?????????????
Echo erste Variable %1
Echo zweite Variable %zvar%
Programm.exe %1 %zvar%


Kann mir jemand helfen ... ?

Gruß Jochen
 
Hallo Jochen,

weiß nicht, ob es auch unter Batch funktioniert, aber "Set" (kann auch "set /p" seien und danach jeweils den Namen der Variablen=Text für die Variable), wenn Du einer Variablen einen Wert übergeben willst. Musst mal ggf. danach googeln.

Viele Grüße

Heiko
 
Keine Komplettziataten!

MfG Allonewalk

Hallo Heike,

was soll ich in sie Batch aufnehmen ???

SET zvar = Datei.txt

funktioniert leider nicht, da habe ich nur den Dateiname nicht den Inhalt der von Datei.txt

Gruß Jochen
 
Zuletzt bearbeitet von einem Moderator:
Hallo Jochen,

oh, Du willst sogar den Inhalt einer Datei in eine Variable übergeben - sorry, hatte ich in Deinem Eingangspost überlesen!

Obwohl ich einige Jahre VBA programmiert habe, weiß ich spontan nicht den Syntax für die Windows/DOS-Umgebung.

Aber müsste ja so von der Logik her laufen:

- Du müsstest im Batch über den "Editor" (notepad) die Datei "Datei.txt" öffnen lassen
- der gesamten Textinhalt markieren und anschließend kopieren
- und diesen dann an Deine Variable xy übergeben

Per Editor die TXT öffnen, jo, dass sollte man hinbekommen. Das markieren und kopieren - oh je, dass könnte ich mir schon schwerer vorstellen. Bei den DOS-Variablen weiß ich leider nicht, wie viel "Inhalt" sie dann vertragen, ob 255 Zeichen oder sogar mehr - könnte ein ernsthaftes Problem werden.

Viele Grüße

Heiko (bin ein Männchen :) )
 
Sorry Heiko,

wenn Du z.b. mit "Type Datei.txt" die Datei aus gibst, dann wird dir der Inhalt aus dem Monitor angezeigt.
wenn du mit "copy con > Datei.txt" bekommst Du z.b. einen Text in die Datei.

Ich habe mir so was gedacht wie ....
type Datei.txt
copy con > %zvar%

nur das funktioniert nicht.

Übrigens es handelt sich bei Datei.txt und Textdateinen kleine 128 byte.

Wenn Du VBL kannst da sollte man darüber nach denken ob es nicht eine möglich keit gibt ganz einfach die Textdatei in VBL einzulesen ... sollte kein problem sein. Und anschließend das VBL-Prog beenden mit einer variabele die zurückgegeben wird ... denke das kann man programmieren oder was meinst du ?

Gruß Jochen
 
Hallo Jochen,

da wir beide keine Experten sind, müssen wir uns da wohl rantasten. :D

Mit dem folgenden Befehl solltest Du zumindestens schon mal den Inhalt der Text-Datei auslesen können:

for /f %%i in (Datei.txt) do echo %%i

Und beim Stöbern habe ich noch was interessantes gefunden:

Auf der Seite (schicke ich Dir per PN) musst Du noch etwas weiter unten schauen, da sind zig Themen/weitere Fragen-Antworten genau zu der Thematik. Da solltest Du fündig werden.

Viele Grüße

Heiko

PS: VBA ist Visual Basic for Applikations und nur in/für MS Office enthalten. Selbst das normale Visual Basic würde uns nicht weiterhelfen, wo mit man zwar alles entwickeln kann, aber Du willst ja nur eine Batch-Datei, kein eigenständiges Programm.
 
Hallo Leute,

so funktionierts erst mal ...

for /f %%i in (Datei.txt) do echo %%i
for /f %%i in (Datei.txt) do set zvar=%%i
Programm.exe %1 %var%

ich wollte das noch etwas ausbauen ....
IF not exist Datei.txt goto weiter1
for /f %%i in (Datei.txt) do echo %%i
for /f %%i in (Datei.txt) do set zvar=%%i
:weiter1
IF exist info.info goto ende
copy *.info info.info
for /f %%i in (info.info) do echo %%i
for /f %%i in (info.info) do set zvar=%%i
del info.info
Programm.exe %1 %var%
:ende

funktioniert auch soweit ...
wenn somit das File Datei.txt nicht vorhanden ist dann soll er das file *.info auslesen.
Da es mit *.info nicht funktioniert hat habe ich *.info temperär in info.info kopiert.

das problem nun ist das die *.info zum einen aus mehreren Zeilen bestehen und das ich die erste Zeile benötige und zwar ab dem 9ten Zeichen. Da gibt es für den FOR aufruf eine Option SKIP=n , nur die will bei mir nicht. Egal ob ich sie als SkIP=9 oder "SKIP=9" einfüge.

Jemand eine Idee ???

Gruß Jochen

@Heiko007 bitte den link noch mal
 
Hallo Jochen,

Sorry, hatte den Link in der PN an Dich vergessen - kommt gleich neue.

Das, was Du jetzt hinsichtlich bestimmter Zeile brauchst, da steht auch ein Beispiel auf der HP von meinem Link.

Viele Grüße

Heiko
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten