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-ID: 185999

Url: https://administrator.de/forum/textdatei-zeilenweise-auslesen-185999.html

Ausgedruckt am: 22.04.2025 um 21:04 Uhr

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
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
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
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)
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
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!