glockmane
Goto Top

Textdatei zeilenweise auslesen

Hallo Community,

Ich versuche anhand einer Liste Programme in der Windows Firewall zu blocken, leider klappt es nicht wie gewollt, da anscheinend die Parameter %name% und %pfad% beim netsh Aufruf nicht vorhanden sind..

Ist warscheinlich eine Kleinigkeit, allerdings bin ich nur ein Anfänger ;)

Hier mal der Code:

@echo off

setlocal EnableDelayedExpansion

cd /d "%~dp0"

for /f "tokens=1* delims=," %%b in ('findstr /n . "C:\Users\glock_000\Desktop\Blockliste.txt"') do (

if %%b==1 set "name=%%c"
if %%b==2 set "pfad=%%c"

netsh advfirewall firewall add rule name="!name!" dir=in program="!pfad!" action=block
netsh advfirewall firewall add rule name="!name!" dir=out program="!pfad!" action=block

)

pause

Content-Key: 185999

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

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: bastla
bastla 05.06.2012 aktualisiert um 19:01:46 Uhr
Goto Top
Hallo GlockMane!

Dein Stichwort ist "delayedexpansion" - auch gleich zu Beginn des Tutorials zur FOR-Schleife besprochen ...

Grüße
bastla
Mitglied: GlockMane
GlockMane 05.06.2012 um 19:17:04 Uhr
Goto Top
Das habe ich in meinem Code von oben bereits beherzigt, aber es klappt leider nicht face-sad
Mitglied: bastla
bastla 05.06.2012 aktualisiert um 19:24:29 Uhr
Goto Top
... was auch daran liegen könnte, dass Du ja nur entweder einen Namen oder einen Pfad festlegst (bzw den alten Variableninhalt weiter verwendest) - wenn Du übrigens die erste Zeile auf "echo on" änderst, kannst Du den Ablauf des Batches besser nachvollziehen ...

Was steht denn übrigens genau in Deiner "Blockliste.txt"?

Grüße
bastla
Mitglied: GlockMane
GlockMane 05.06.2012 um 19:26:11 Uhr
Goto Top
Also die Blockliste.txt sieht so aus:

Programm1,D:\Programm1.exe
Programm2,D:\Programm2.exe
.
.
.

Im Endeffekt stehen in jeder Zeile Name und Pfad und ich will für jede Zeile sozusagen zwei Firewallregeln erstellen.. (ein- und ausgehend)
Mitglied: bastla
bastla 05.06.2012 um 19:30:01 Uhr
Goto Top
Hallo GlockMane!

Dann sähe das aber eher einfach so aus:
@echo on & setlocal
for /f "usebackq tokens=1* delims=," %%b in ("C:\Users\glock_000\Desktop\Blockliste.txt") do (  
    netsh advfirewall firewall add rule name="%%b" dir=in program="%%c" action=block  
    netsh advfirewall firewall add rule name="%%b" dir=out program="%%c" action=block  
)
pause
Grüße
bastla
Mitglied: GlockMane
GlockMane 05.06.2012 um 19:38:05 Uhr
Goto Top
Und genauso funktioniert es dann auch! Warum einfach.. ;)

Danke dir und einen schönen Abend!