freshman2017
Goto Top

EQU - GLEICH - BATCH

Hallo,

im nachfolgendem Batch:

@echo off &setlocal
set"quelle=%userprofile%\Desktop\TEST\quelle.csv"  
set "ziel=%userprofile%\Desktop\TEST\ziel.txt"  
>"%ziel%" (for /f "usebackq skip=1 tokens=1-21 delims=," %%a in ("%quelle%") DO if %%r GTR 0 echo|set /p="Kopf;Rechnung;%%d;Daten;R-1;%%r;Ja;%%l;%%m;;;;;;;;;%%b;%%j;%%k;")  

GTR mit EQU ersetzen, also EQU Mustermann OR Musterfrau OR Fraumuster.

Also wenn in %%r der Wert gleich Mustermann OR Musterfrau OR Fraumuster dann sollen die Werte aus der jeweiligen Spalte geschrieben werden.

Nun möchte ich aber noch gerne, dass er neben der oberen Prüfung eine weitere Prüfüng in Spalte a vornimmt. Gleich Max OR Maria OR Erika.

Geht sowas?

Beste Grüße,
freahman2017

Content-Key: 338454

Url: https://administrator.de/contentid/338454

Ausgedruckt am: 19.03.2024 um 10:03 Uhr

Mitglied: 132895
132895 21.05.2017 aktualisiert um 09:46:09 Uhr
Goto Top
Also wenn in %%r der Wert gleich Mustermann OR Musterfrau OR Fraumuster dann sollen die Werte aus der jeweiligen Spalte geschrieben werden.
echo(%%r | findstr /i "^Mustermann$ ^Musterfrau$ ^FrauMuster$" >nul 2>&1 && (  
    REM Found, do something
) || (
    REM Not found, do
something else
)
Nun möchte ich aber noch gerne, dass er neben der oberen Prüfung eine weitere Prüfüng in Spalte a vornimmt. Gleich Max OR Maria OR Erika.
Selbes Schema, s.o.

https://ss64.com/nt/findstr.html

Gruß
Mitglied: freshman2017
freshman2017 21.05.2017 um 10:56:27 Uhr
Goto Top
Hi password,
vielen Dank, wie kann ich es verketten,wenn eine weitere Spalte geprüft werden soll? Einfach so wie unten im Code?

@echo off &setlocal
set"quelle=%userprofile%\Desktop\TEST\quelle.csv"  
set "ziel=%userprofile%\Desktop\TEST\ziel.txt"  

echo(%%r | findstr /i "^Mustermann$ ^Musterfrau$ ^FrauMuster$" >nul 2>&1 && (  
    REM Found, do something
) || (
    REM Not found, do
something else
)

echo(%%a | findstr /i "^Max$ ^Maria$ ^Erika$" >nul 2>&1 && (  
    REM Found, do something
) || (
    REM Not found, do
something else
)

Wenn beides WAHR ist, soll er ja folgendes tun, sonst soll er die Werte aus der Zeile garnicht mit übernehmen:

echo|set /p="Kopf;Rechnung;%%d;Daten;R-1;%%r;Ja;%%l;%%m;;;;;;;;;%%b;%%j;%%k;"  

Wo müsste das eingebaut werden? In Zeile 3?

Vielen Dank.
Mitglied: 132895
132895 21.05.2017 aktualisiert um 11:26:46 Uhr
Goto Top
Ja nee min jung, das muss alles in die For-Schleife denn woher sollte sonst die Variable %%r kommen?!
Mitglied: freshman2017
freshman2017 21.05.2017 um 13:01:48 Uhr
Goto Top
Wäre das so richtig? Kannst du mir da helfen?

@echo off &setlocal
set"quelle=%userprofile%\Desktop\TEST\quelle.csv"  
set "ziel=%userprofile%\Desktop\TEST\ziel.txt"  
>"%ziel%" (for /f "usebackq skip=1 tokens=1-21 delims=," %%a in ("%quelle%") DO if %%r | findstr /i "^Mustermann$ ^Musterfrau$ ^FrauMuster$" >nul 2>&1 &&  
%%a | findstr /i "^test1n$ ^test3$ ^tes5r$" >nul 2>&  
 (
    REM Found, do something
) |set /p="Kopf;Rechnung;%%d;Daten;R-1;%%r;Ja;%%l;%%m;;;;;;;;;%%b;%%j;%%k;") (  
    REM Not found, do
something else
)
Mitglied: 132895
132895 21.05.2017, aktualisiert am 23.05.2017 um 23:02:04 Uhr
Goto Top
@echo off &setlocal
set"quelle=%userprofile%\Desktop\TEST\quelle.csv"  
set "ziel=%userprofile%\Desktop\TEST\ziel.txt"  
>"%ziel%" (for /f "usebackq skip=1 tokens=1-21 delims=," %%a in ("%quelle%") DO (  
    echo(%%r| findstr /i "^Mustermann$ ^Musterfrau$ ^FrauMuster$" >nul 2>&1 && (  
        echo(%%a| findstr /i "^Max$ ^Maria$ ^Erika$" >nul 2>&1 && (  
           echo(Kopf;Rechnung;%%d;Daten;R-1;%%r;Ja;%%l;%%m;;;;;;;;;%%b;%%j;%%k;
        ) 
    )
))
Und tschüss.
Mitglied: freshman2017
freshman2017 21.05.2017 um 14:52:21 Uhr
Goto Top
Danke, dass klappt ☺
Mitglied: rubberman
rubberman 21.05.2017 um 15:22:08 Uhr
Goto Top
Nur noch mal so hinterher geschoben ...
Ich weiß nicht wie lang die Liste ist, die du verarbeitest, aber FINDSTR ist ein externes Programm (findstr.exe). Wenn du das für jeden Datensatz gleich zweimal aufrufst, dann dauert das von jetzt bis unendlich.
IF mit logisch verknüpften Bedingungen (OR und AND) in Batch

Grüße
rubberman
Mitglied: freshman2017
freshman2017 22.05.2017 um 11:32:25 Uhr
Goto Top
Ich muss doch noch mal nerven.... leider bleibt meine Zieldatei leer, obwohl in Spalte D der Wert bspw. gleich 10 ist.
In der Zieldatei soll dann der Wert aus Spalte ae stehen und eine 1 hintereinander....kann mir jemand verraten, woran es liegt?

@echo off &setlocal
set"quelle=%userprofile%\Desktop\TEST\quelle.csv"  
set "ziel=%userprofile%\Desktop\TEST\ziel.txt"  
>"%ziel%" (for /f "usebackq skip=1 tokens=1-31 delims=," %%a in ("%quelle%") DO (  
    echo(%%d | findstr /i "^10$ ^11$ ^12$ ^13$ ^14$ ^18$ ^19$ ^21$ ^22$ ^25$ ^30$ ^31$" >nul 2>&1 && (  
    echo(%%ae;1;
        ) 
    )
))
Mitglied: rubberman
Lösung rubberman 23.05.2017 um 22:30:44 Uhr
Goto Top
echo(%%d | ...
Da gibts ein Leerzeichen zwischen %%d und | das mit zur ECHO Ausgabe gehört und somit auch an FINDSTR weitergereicht wird. Wenn du das mal wegnimmst, hat sich das Problem vermutlich schon gelöst.

Grüße
rubberman