platin
Goto Top

Zeile in Batch überprüfen ob vorhanden und wenn nicht einfügen

Hallo,

ich benötige in der %systemroot%\drivers\etc\services einen weiteren Eintrag.

Diesen würde ich gern per GPO verteilen. Meines Wissens nach geht das nur per Batch files. Also "Skript beim Starten".

Jedoch müsste es doch so sein, dass wenn ich einfach eine Batch á la:

 echo service 1111/tcp >> %systemroot%\system32\drivers\etc\services 

ausführe, dass er bei jedem Start diese Zeile in die Datei schreibt.

Also brauche ich eine Prüfung in meinem Batch Script, welche ungefähr so aussieht:

Wenn Zeile service 1111/tcp in %systemroot%\system32\drivers\etc\services vorhanden dann gehe zu :ende

Wenn Zeile service 1111/tcp in %systemroot%\system32\drivers\etc\services NICHT vorhanden dann schreibe in Datei und :ende


Hat jemand eine Idee, wie ich das bewerkstellige?

Danke und Grüße

platin

Content-Key: 194574

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

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

Member: Hitman4021
Hitman4021 Nov 20, 2012 at 13:49:08 (UTC)
Goto Top
Hallo,

Ungetestet aber so in die Richtung
@echo off && set local
for /f %%i in ("%systemroot%\system32\drivers\etc\services") do (  
    if %%i == "1111/tcp" (  
        set /p true = "true"  
    ) 
)
if %true% == "true" (  
    echo service 1111/tcp >> %systemroot%\system32\drivers\etc\services 
)

Gruß
Member: platin
platin Nov 20, 2012 at 13:57:57 (UTC)
Goto Top
Danke für deine Antwort.

Ich erhalte diese Meldung:

 LOCALAPPDATA=C:\Users\username\AppData\Local
"(" kann syntaktisch an dieser Stelle nicht verarbeitet werden.  
Member: Hitman4021
Hitman4021 Nov 20, 2012 at 14:05:50 (UTC)
Goto Top
Hallo,

ja mein Fehler es waren zwei " zuviel

@echo off && set local
for /f %%i in (%systemroot%\system32\drivers\etc\services) do (
    if %%i == "service 1111/tcp" (  
        set /p true = "true"  
    ) 
)
if %true% == "true" (  
    echo service 1111/tcp >> %systemroot%\system32\drivers\etc\services 
)

Gruß
Member: platin
platin Nov 20, 2012 at 14:08:31 (UTC)
Goto Top
Hitman4021, noch mal danke für die rasche Antwort.

Jedoch besteht das Problem weiterhin. face-sad

Ich kann mir keinen Reim drauf machen, wieso das so ist.
Member: bastla
bastla Nov 20, 2012 updated at 14:16:40 (UTC)
Goto Top
Hallo platin!

Vielleicht so:
findstr /ic:"service 1111/tcp" "%systemroot%\system32\drivers\etc\services">nul || >>"%systemroot%\system32\drivers\etc\services" echo service 1111/tcp
Hisichtlich Hitmans Ansatz: Vermutlich liegt's am Leerzeichen (zwischen "tcp" und ">>"), das mit in die Zeile geschrieben wird ...

Grüße
bastla
Member: platin
platin Nov 20, 2012 at 14:50:13 (UTC)
Goto Top
Hallo bastla,

danke. Das hat funktioniert.

Und wie bewerkstellige ich "suche in Datei nach "string" und ersetze durch "string2"?

Grüße

platin
Member: bastla
bastla Nov 20, 2012 at 15:15:33 (UTC)
Goto Top
Hallo platin!

Ganz so selten kommt das Thema hier ja nicht vor - ein Beispiel: Suchen ersetzen per batch in einer TXT

Grüße
bastla