Jump to content

Problem mit FOR und IF


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

 

ich habe da ein Problem mit einer FOR-Schleife und IF:

 

so sieht die Batch aus:

 

set SuchString=text

 

for /f "delims=" %%i in ('findstr /B /c:"%SuchString%" "C:\pfad\zur-testdatei\test_datei_text.txt"') do if "%SuchString%"=="%%i" echo >>"C:\pfad\zur-testdatei\%SuchString%.txt" "%%i"

 

In der DOS-Box sehe ich das es funktionier nur leider wird die Datei %SuchString%.txt nicht erstellt.

 

Woran kann das liegen.

 

Danke

 

mfg

 

Michael

Geschrieben

Hallo Michael,

 

versuche mal das zu ändern:

 

for /f "delims=" %%i in ('findstr /B /c:"%SuchString%" "C:\pfad\zur-testdatei\test_datei_text.txt"') do if "%SuchString%"=="%%i" echo [b][color="Red"]>[/color][/b]"C:\pfad\zur-testdatei\%SuchString%.txt" "%%i"

Geschrieben

Hallo XP-Fan,

 

hat leider nicht geklappt.

 

Ich glaube das Problem ist, dass mehr als nur der %SuchString% gefunden wird.

 

Was ich vorhabe ist folgendes:

 

Die Batch soll in einer Textdatei nachschauen ob der %SuchString% am Anfang einer Zeile steht.

 

Wenn das so ist, soll die Zeile in die Datei %SuchString%.txt kopiert werden, wenn das

nicht der Fall ist, soll die Datei %SuchString%.txt erstellt werden mit einer "0" drin.

 

mfg

 

Michael

Geschrieben

Moin Michaelk1962,

 

so viel Heckmeck würde ich da nicht machen. Mach es ohne FOR-Anweisung.


set SuchString=text
Set Wodenn="C:\pfad\zur-testdatei\test_datei_text.txt"

(findstr /B /c:"%SuchString%" %wodenn%|| echo 0 ) >C:\pfad\zur-testdatei\%SuchString%.txt
[/Code]

 

Grüße

Biber

Geschrieben

Uupps, Michaelk1962,

 

hast Recht... ich hatte die Datei, in der gesucht werden sollte vergessen... sorry.

Habe es oben um die Variable %wodenn% (wo denn gesucht werden soll) ergänzt.

 

Grüße

Biber

Geschrieben

Moin Michaelk1962,

 

die zwei Striche ist die ODER-Verknüpfung zwischen zwei CMD-Befehlen in einer Zeile.

 

Befehl1 || Befehl2 -----> Bedeutet. wenn Befehl 1 in die Grütze geht/Fehler meldet /Errorlevel ungleich 0 setzt, DANN und nur dann führe Befehl 2 aus

 

Befehl1 && Befehl2 ---> Nur dann, wenn Befehl1 fehlerfrei war (Errorlevel = 0), dann Befehl2

 

Befehl1 & Befehl2 ---> mach immer beides. vergl. die Standard-Batch-Eröffnung "@echo off & setlocal"

 

Im Prinzip ist also "||" gleichbedeutend mit einer Anweisung "if Errorlevel 1 [...dann mach..]"

 

Grüße

Biber

 

Grüße

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...