我之前设法使这段代码工作但是我丢失了我做过的文件,我无法再弄清楚:(
后台:将此批处理文件拖到其在该文件夹中搜索的任何文件夹中,并通过将其添加到Windows防火墙来阻止所有带有.exe的文件。
我目前在要阻止.exe的文件夹中有批处理文件 我用:
@setlocal enableextensions
@cd /d "%~dp0"
set location=%cd%
设置变量位置,例如:C:\ Users \ UserName \ Desktop。 其他行只是在管理员
中运行批处理时更正位置我有:
FOR %%i in (*.exe) do (echo. %%i)
其中显示了放置批处理文件夹中扩展名为.exe的(多个)文件名。例如。 TEST.EXE
我也有:
For /F "tokens=*" %%B In ('Dir "%*" /a-d /b /on /s ^|find ".exe"') Do echo %%B
在放置批处理的文件夹中显示(多个)文件目录及其名称,扩展名为.exe。例如。 C:\ Users \用户名\桌面\将Test.exe
现在的问题是:我如何使用带有以上这些线的for循环(或者如果不需要)将它们添加到防火墙:
netsh advfirewall firewall add rule name="%%i" dir=in action=allow program="%%B"
显然,上面的行不是for循环,变量%% i和%% B不会对文件夹中找到的每个exe重复。
如何将其修复为for循环? %%我应该为每个名称更改,即%% i吐出的文件名是什么。和%% B应该是FOR / F吐出来的。
提前致谢。 詹姆斯
感谢您的帮助。 如果有人需要这个批处理命令,这是完整的脚本:
@ echo off
@setlocal enableextensions
@cd /d "%~dp0"
color F0
title Exe blocker
echo.
echo. ==============================
echo. == Welcome to .exe blocker ==
echo. ==============================
echo.
Echo Current location: %cd%
echo.
CHOICE /C YN /M "Do you want to search in the current location?"
IF Errorlevel 2 goto END
IF Errorlevel 1 goto Yes
::--------------------CHECK and searching files-----------------
:Yes
set location=%cd%
cls
echo.
Echo. Searching for .exe files in %location%
echo.
set /a count=0
echo.___________________________________________
echo.Found:
echo.
FOR %%i in (*.exe) do (echo. %%i & set /a count+=1)
echo.___________________________________________
echo.
title Exe blocker %count% Files found
echo. Number of files found with .exe extention: %count%
echo.
echo.
set add2=
CHOICE /C YN /M "Do you want to add aditional information?"
IF Errorlevel 2 goto block
IF Errorlevel 1 goto ADD
::-----------------ADD additional info---------------
:ADD
Set /p add=Please type the additonal information for the name:
Set add2=%add%
::-----------------Add files to firewall--------------
:block
cls
title Exe blocker - Blocking Rules
set /a countt=0
echo.
echo.___________________________________________
echo. Inbound Rules
echo.___________________________________________
FOR /r %%B in (*.exe) do (set /a countt+=1 & echo.%countt%. %%~nxB blocking... & netsh advfirewall firewall add rule name="%add2%%%~nxB" dir=in action=block program="%%~dpfnxB")
echo.___________________________________________
echo. OutBound rules
set /a coun=0
echo.___________________________________________
FOR /r %%B in (*.exe) do (set /a coun+=1 & echo.%coun%. %%~nxB blocking... & netsh advfirewall firewall add rule name="%add2%%%~nxB" dir=out action=block program="%%~dpfnxB")
echo.___________________________________________
Echo. Added files to Firewall
echo.
title Exe blocker - Rules Blocked
Pause
::------------------------END---------------------
:END
cls
ECHO.
Echo. Thanks for using .exe blocker
Echo.
CHOICE /C YN /T 10 /D n /M "Do you want to open firewall? (10 seconds)"
IF Errorlevel 2 goto EXIT
IF Errorlevel 1 goto OPEN
::------------------Open Firewall---------------
:OPEN
start "C:\Windows\System32" rundll32.exe shell32.dll,Control_RunDLL firewall.cpl
Goto EXIT
:EXIT
答案 0 :(得分:0)
@setlocal enableextensions
@cd /d "%~dp0"
@echo off
set location=%cd%
For /r %%B In (.*exe) Do (
echo %%B
echo %%~nxB
netsh advfirewall firewall add rule name="%%~nxB" dir=in action=allow program="%%~dpfnxB"
)