guies 发表于 2019-8-4 10:33:30

如何用批处理把同一批处理的列表加入for处理

现在不希望联网的软件越来越多了,想用同一批处理(不要 >> temp.txt) 把列表中的文件加入阻挡防火墙里。
(目前是另外用文件.txt)的方式,但希望能用同一批理处理完成。



title 防火牆阻擋列表
@echo off
cmd /c for %%i in ( ????? ) do netsh advfirewall firewall add rule name="%%~nxi" dir=out program=%%i action=block remoteip=any

:BlockFirewall
c:\Program Files\test\test1.exe
c:\Program Files\test\test2.exe
c:\Program Files\test\test3.exe
c:\Program Files\test\test4.exe
c:\Program Files\test\test5.exe



nttwqz 发表于 2019-8-4 12:17:44

()里面的内容是可是多行写的,不是只能一行
for %%a in (
    a
    b
    c
    d
) do echo %%a

黑中见白 发表于 2019-8-4 13:12:13

用 simplewall 好啦

guies 发表于 2019-8-4 14:46:19

nttwqz 发表于 2019-8-4 12:17
()里面的内容是可是多行写的,不是只能一行

这个方式可行,但有没有辨法
c:\Program Files\test\test1.exe
c:\Program Files\test\test2.exe
这样就行,而不需要
"c:\Program Files\test\test1.exe"
"c:\Program Files\test\test2.exe"
因为 Total Commander 我可以搜寻整个文件夹的 .exe
然后复制全部的路径和档名,但它并没有加上 " " 这种功能。

junyee 发表于 2019-8-4 17:33:55

可以用伪标签列表 + findstr获取行号 + skip行数.

dos时代菜鸟 发表于 2019-8-4 22:28:39

本帖最后由 dos时代菜鸟 于 2019-8-4 22:40 编辑

大概就是这个意思
for 读取本文件的第6行以后的部分


title 防火牆阻擋列表
@echo off
for /f "skip=6 delims=" %%i in (' type "%~dpnx0" ') do netsh advfirewall firewall add rule name="%%~nxi" dir=out program=%%i action=block remoteip=any
goto :eof

:BlockFirewall
c:\Program Files\test\test1.exe
c:\Program Files\test\test2.exe
c:\Program Files\test\test3.exe
c:\Program Files\test\test4.exe
c:\Program Files\test\test5.exe

nttwqz 发表于 2019-8-4 23:47:52

guies 发表于 2019-8-4 14:46
这个方式可行,但有没有辨法
c:\Program Files\test\test1.exe
c:\Program Files\test\test2.exe


汗!

你是不是想将一个或多个软件安装目录及子目录下的所有程序禁止联网?

你这个?都批处理了那还能一行一行敲?!

dos时代菜鸟 发表于 2019-8-5 09:24:32

nttwqz 发表于 2019-8-4 23:47
汗!

你是不是想将一个或多个软件安装目录及子目录下的所有程序禁止联网?


他可能不想 dir *.exe /b /s /a-d
是想通过 totalcmd 之类的软件 导出一个文件列表,又想把文件列表融入 cmd 脚本,而不单独存在。

guies 发表于 2019-8-5 09:34:53

本帖最后由 guies 于 2019-8-5 10:48 编辑

可以用了,很多
像 Diskgenius 无广告版的
启动时还是会联网,像这种无需联网的软件,
阿知它传送了什么资料过去。
所以无需联网的软件,还是封一封的好。

dos时代菜鸟 发表于 2019-8-5 16:51:07

guies 发表于 2019-8-5 09:34
可以用了,很多
像 Diskgenius 无广告版的
启动时还是会联网,像这种无需联网的软件,


for /f   有 delims= 参数用于设置 隔断,设置单词隔断为空,就可以了,会把整行内容作为 %%i

窄口牛 发表于 2019-8-5 18:09:33

即使可以上网的软件,也不是它所有的exe都需要上网,,那些也需要禁止的。有的exe甚至应该拒绝它运行。
页: [1]
查看完整版本: 如何用批处理把同一批处理的列表加入for处理