1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

BATCH: Finde Textstring - wenn ja, mache das und das

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von Kaasi0815, 20. Juni 2007.

  1. Kaasi0815

    Kaasi0815 Grünschnabel

    Guten Morgen!
    Ich stehe gerade bei einem batch problem an und hoffe, einer von euch kann mir weiterhelfen:

    Eine textdatei soll nach dem Wort "FEHLER" durchsucht werden - wenn dieser String vorhanden ist, soll er die datei kopieren, wenn nicht, soll er nichts machen...

    Ich kann zwar nach dem Wort suchen, ich kann auch kopieren, aber beim IF statement scheitere ich... Benötige ich fürs IF statement eine variable und wenn die TRUE ist, dann kopiere...

    %
    CODE:

    Find /i "FEHLER" Update_AV_log.txt
    copy F:\Update_AV_log.txt "C:\Dokumente und Einstellungen\Plancad-SK\Desktop\Update_AV_log_copy.txt"
    REN "C:\Dokumente und Einstellungen\Plancad-SK\Desktop\Update_AV_log_copy.txt" AV_%date%.txt

    %

    Ich hoffe, es kann mir wer weiterhelfen - mir als batch rookie :)

    lg
    Stefan
     
  2. deepthroat

    deepthroat Erfahrenes Mitglied

    Hi.
    Probier's mal so:
    Code (Text):
    1. Find /i "FEHLER" Update_AV_log.txt
    2. if errorlevel 1 goto notfound
    3. copy F:\Update_AV_log.txt "C:\Dokumente und Einstellungen\Plancad-SK\Desktop\Update_AV_log_copy.txt"
    4. REN "C:\Dokumente und Einstellungen\Plancad-SK\Desktop\Update_AV_log_copy.txt" AV_%date%.txt
    5. :notfound
    Gruß
     
  3. Kaasi0815

    Kaasi0815 Grünschnabel

    Perfekt!

    Danke!
     
  4. fluessig

    fluessig Royal Blue

    EDIT: Hab mal wieder zu lange gebraucht mit tippen ;) deepthroat war schneller.

    Hallo Kaasi,

    Wie du schon richtig bemerkt hast, brauchst du eine IF Abfrage. Die Variable die du suchst nennt sich errorlevel. Immer wenn ein Programm ausgeführt wurde, wird der Variablen errorlevel eine Zahl zugewiesen.

    Findest du mit find /i "Fehler" datei.txt z.B. etwas, so ist der errorlevel danach 0 (alles hat geklappt). Findest du jedoch nichts, so ist der errorlevel 1.

    Das ganze sieht dann so aus.
    Code (Text):
    1. find /i "FEHLER" Update_AV_log.txt
    2. IF errorlevel 1 (
    3.    echo Kein FEHLER gefunden.
    4. ) ELSE (
    5.    copy F:\Update_AV_log.txt "C:\Dokumente und Einstellungen\Plancad-SK\Desktop\Update_AV_log_copy.txt"
    6.    REN "C:\Dokumente und Einstellungen\Plancad-SK\Desktop\Update_AV_log_copy.txt" AV_%date%.txt
    7. )
    Aufgrund der Funktionsweise von IF errorlevel ... musst du auf Errorlevel 1 abfragen und nicht auf Errorlevel 0.
    Genaueres kannst du unter
    http://home.mnet-online.de/horst.muc/ger/batkurs_ansi.txt
    nachlesen.
     
  5. Kaasi0815

    Kaasi0815 Grünschnabel

    Danke für die Erklärung Flüssig,
    Das ist genau das, was ich gebraucht hab!
    Danke!
     
  6. frankofoda

    frankofoda Grünschnabel

    Hallo,

    ich bin auf diesen Beitrag über Google gekommen. Er ist zwar schon ein paar Tage älter aber ich hoffe jemand von euch hilft mir vielleicht trotzdem. Die oben geschilderte Aufgabe habe ich etwas komplexer. Es soll in einem Ordner mit sehr vielen txt Dateien mir unterschiedlichen Namen nach einem Wert gesucht werden. Wenn dieser Wert in der txt gefunden worden ist soll diese in ein Unterverzeichnis verschoben werden.
    Der Ordner heißt z.B. NC Daten unsortiert. In der txt soll z.b. nach dem Wert t=15mm gesucht werden. Dann soll die Datei in das Verzeichnis NC Daten\bl 15 verschoben werden.

    Vielen Dank im Vorraus für eure Hilfe. Bitte entschuldigt wenn das Problem bereits einmal diskutiert worden ist. Meine Suche hat leider erstmal kein Ergebniss hervorgebracht.

    MfG

    FF

    Edit: Das ganze soll als Schleife alle Dateien durchlaufen. Im Bestenfalls suchen dann weitere Schleifen nach anderen Werte oder sucht man nach alternativen vielleicht besser in der txt über eine if else schleife?
     
Die Seite wird geladen...