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

Printed on: April 25, 2024 at 06:04 o'clock

Mitglied: 132895
132895 May 21, 2017 updated at 07:46:09 (UTC)
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ß
Member: freshman2017
freshman2017 May 21, 2017 at 08:56:27 (UTC)
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 May 21, 2017 updated at 09:26:46 (UTC)
Goto Top
Ja nee min jung, das muss alles in die For-Schleife denn woher sollte sonst die Variable %%r kommen?!
Member: freshman2017
freshman2017 May 21, 2017 at 11:01:48 (UTC)
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 May 21, 2017, updated at May 23, 2017 at 21:02:04 (UTC)
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.
Member: freshman2017
freshman2017 May 21, 2017 at 12:52:21 (UTC)
Goto Top
Danke, dass klappt ☺
Member: rubberman
rubberman May 21, 2017 at 13:22:08 (UTC)
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
Member: freshman2017
freshman2017 May 22, 2017 at 09:32:25 (UTC)
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;
        ) 
    )
))
Member: rubberman
Solution rubberman May 23, 2017 at 20:30:44 (UTC)
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