Batch Variable

  • Problem

  • jochenv
  • 917 Aufrufe 7 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Batch Variable

    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
  • 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