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!

Recommended Posts

Posted

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

Posted

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"

Posted

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

Posted

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

Posted

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

Posted

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!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...