zeroblue2005
Goto Top

Batch mit If Bedingung nur ausführen wenn Wert aus TXT übereinstimmt

Hallo Zusammen,

ich weiss nicht, ob das überhaupt möglich ist mit einer Batchzu lösen, aber ich würde gerne in einer Batch folgendes haben wollen:

if exist "Ist Textinhalt in der Datei C:\access.txt" (  
usw.
exit
rem goto :eof
)

Inhalt der Datei access.txt ca. so:

12345
67890
abcde
fghijk

Stellt also die If Bedingung fest, dass einer diese Werte vorhanden ist, dann Feuer frei und wenn nicht dann raus da.

Danke

Content-ID: 447117

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

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

Kraemer
Lösung Kraemer 03.05.2019 um 14:22:17 Uhr
Goto Top
Zitat von @zeroblue2005:
ich weiss nicht, ob das überhaupt möglich ist mit einer Batchzu lösen, aber ich würde gerne in einer Batch folgendes haben wollen:
nein, es ist nicht möglich. Ansonsten hätte da ja schon jemand drüber geschrieben, und du hättest das mit Google und Co. gefunden.

Gruß
erikro
Lösung erikro 03.05.2019 um 14:23:58 Uhr
Goto Top
Moin,

Zitat von @Kraemer:

Zitat von @zeroblue2005:
ich weiss nicht, ob das überhaupt möglich ist mit einer Batchzu lösen, aber ich würde gerne in einer Batch folgendes haben wollen:
nein, es ist nicht möglich. Ansonsten hätte da ja schon jemand drüber geschrieben, und du hättest das mit Google und Co. gefunden.

Echt jetzt? Du hast verstanden, was er will?

Liebe Grüße

Erik
Kraemer
Kraemer 03.05.2019 um 14:25:43 Uhr
Goto Top
Zitat von @erikro:
Echt jetzt? Du hast verstanden, was er will?
kann sein. Bin mir nicht sicher. Kann mich aber an seinen letzten Thread erinnern...
zeroblue2005
zeroblue2005 03.05.2019 um 14:28:36 Uhr
Goto Top
He Erik,

Kaemer kennt mich schon face-wink

Ja doch, aber dass Thema heisst glaube ich vergleichsoperatoren oder geht in den Bereich und hatte da auch was gelesen, aber wollte mal schauen, ob vieleicht jemand doch ne Lösung hat oder eben: GEHT NICHT!

Tja ist halt so und gut ist face-wink

Danke
139374
Lösung 139374 03.05.2019 aktualisiert um 14:49:03 Uhr
Goto Top
Zitat von @Kraemer:
nein, es ist nicht möglich. Ansonsten hätte da ja schon jemand drüber geschrieben, und du hättest das mit Google und Co. gefunden.
Blödsinn de Jung hat keene Ahnung, klar geht das
@echo off
findstr /ilc:"BlaBlub" "c:\access.txt" >nul 2>&1 && (  
    echo gefunden.
) || (
    echo nicht gefunden.
)
ashnod
ashnod 03.05.2019 um 15:00:21 Uhr
Goto Top
Zitat von @139374:
Blödsinn de Jung hat keene Ahnung, klar geht das

Laaaangweilig!!!

face-wink
139374
139374 03.05.2019 aktualisiert um 15:10:01 Uhr
Goto Top
Zitat von @ashnod:

Zitat von @139374:
Blödsinn de Jung hat keene Ahnung, klar geht das

Laaaangweilig!!!

face-wink
Ja dat könne se hier jut, tolle Spröch une sons nüs dahinner. :-P
zeroblue2005
zeroblue2005 05.05.2019 um 11:12:01 Uhr
Goto Top
Streitet euch bitte nicht wegen so was face-smile Ist doch schön, dass es ein Lösung gibt. Diese klappt auch. Allerdings muss ich nach einer Systemvariable suchen lassen, sprich: Statt "Blablub" nach %Computername%, das scheint aber nicht zu gehen oder?
zeroblue2005
zeroblue2005 05.05.2019 um 11:21:48 Uhr
Goto Top
Hat sich erledigt, geht , mit:

findstr /ilc:%computername% "c:\access.txt" >nul 2>&1 && (  

Danke face-smile
zeroblue2005
zeroblue2005 05.05.2019 aktualisiert um 19:10:25 Uhr
Goto Top
Na ja ganz so einfach war es dann noch nicht!

Wenn ich die Syntax einsetze und die access.txt hat z.B. folgenden Inhalt:

WS-Rechner-001
WS-Rechner-002
WS-Rechner-003

Dann wird immer gefunden, selbst wenn der Computername WS-Rechner-004 ist. Das hat doch bestimmt was mit dem hinten Teil zu tun oder?
>nul 2>&1 &&

Leider finde ich keine Beschreibung zur Syntax oder ich suche falsch, hat da jemand einen passenden Link oder kann mir das kurz erläutern?

Er darf nur gefunden schreiben, wenn die Schreibweise 100% exakt ist, in einer Zeile. Groß-Klein Schreibung ist hierbei egal!

Danke
zeroblue2005
zeroblue2005 09.05.2019 um 14:53:48 Uhr
Goto Top
Hat den keiner eine Antwort?
Kraemer
Kraemer 09.05.2019 um 15:40:31 Uhr
Goto Top
Zitat von @zeroblue2005:

Hat den keiner eine Antwort?
Doch sicher. Der Code funktioniert einwandfrei mit deinen Beispieldatensätzen.
zeroblue2005
zeroblue2005 09.05.2019 aktualisiert um 16:03:49 Uhr
Goto Top
Hallo Kraemer,

schön mal was von dir zu lesen face-smile.

Ja und Nein ich glaube auch mittlerweile, dass meine Anforderung nicht ganz erfüllt werden können. Ich bin nämlich schon ein Stück weiter:

Ist natürlich quatsch was ich oben geschrieben habe, mit dem hinteren Teil, dass ist nur für die Ausgabe, das habe ich verstanden. Also habe ich mich auf den vorderen Teil kozentriert und musste und wusste garnicht, dass man Parameter überhaupt so zusammenfassen kann.

/ilc:

Ich frage mich die ganze Zeit, was bitte schön ist "lic" bis ich dahinter gekommen bin das die nichts anderes ist als die Suchparameter nur eben nicht in der Form:

/l = Buchstaben getreu suchen
/i = Igno Groß Klein
/c = Sucht nach Zeichenfolge buchstabengetreu in meinem Fall die Variable %Computername%

So lange nur Buchstaben enthalten sind in der Zeichenkette, ist das alles kein Ding aber Numerischen Werten findet er eben nicht bzw. igonoriert die. Sprich gibt es drei Rechner die so heissen:

ws-test-01
ws-test-02
ws-test-03

würde er alle drei finden, obwohl der Name des Computers sagen wir mal ws-test-04 ist. Grund ist, dass die Zeichenkette ja ws-test enthält. Tja und das ist eben doof. Finde aber auch nicht, womit ich das ändern/anpassen kann als Parameter!

Hier habe ich die Infos her: www.axel-hahn.de
139708
139708 09.05.2019 aktualisiert um 16:09:09 Uhr
Goto Top
Moin @zeroblue2005 ,
Option /x ist dein Freund denn dann werden immer nur ganze Zeilen verglichen nicht nur Teile davon.
findstr /ilxc:"%computername%" "c:\access.txt" >nul 2>&1 && (  
Gruß wireguard
zeroblue2005
zeroblue2005 09.05.2019 um 16:17:34 Uhr
Goto Top
Hi Wireguard,

booor Blind werde ich jetzt auch noch, das steht da auch, na ja wer lesen kann... face-wink

/X Gibt Zeilen aus, die vollkommen übereinstimmen.

Ichwerde es ausprobieren, lieben Dank face-smile
Kraemer
Kraemer 09.05.2019 um 16:32:46 Uhr
Goto Top
Zitat von @zeroblue2005:
So lange nur Buchstaben enthalten sind in der Zeichenkette, ist das alles kein Ding aber Numerischen Werten findet er eben nicht bzw. igonoriert die. Sprich gibt es drei Rechner die so heissen:

ws-test-01
ws-test-02
ws-test-03

würde er alle drei finden, obwohl der Name des Computers sagen wir mal ws-test-04 ist.
das stimmt schlicht nicht. Deswegen hatte ich nocheinmal darauf hingewiesen, dass es mit deinen Testdatensätzen funktioniert:

C:\Temp>Type TestPC.txt
WS-Rechner-001
WS-Rechner-002
WS-Rechner-003
C:\Temp>findstr /ilc:"WS-Rechner-004" TestPC.txt  

C:\Temp>findstr /ilc:"WS-Rechner-003" TestPC.txt  
WS-Rechner-003
C:\Temp>
zeroblue2005
zeroblue2005 09.05.2019 um 17:12:20 Uhr
Goto Top
Wundert mich jetzt ein wenig, warum das bei dir ging und bei mir nicht. Aber jetzt gehts bei mir auch mit dem Parameter /X. So komme ich erst mal wieter, danke !