无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5508|回复: 10

[求助] 如何用批处理把同一批处理的列表加入for处理

  [复制链接]
发表于 2019-8-4 10:33:30 | 显示全部楼层 |阅读模式
现在不希望联网的软件越来越多了,想用同一批处理(不要 >> temp.txt) 把列表中的文件加入阻挡防火墙里。
(目前是另外用文件.txt)的方式,但希望能用同一批理处理完成。



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

  4. :BlockFirewall
  5. c:\Program Files\test\test1.exe
  6. c:\Program Files\test\test2.exe
  7. c:\Program Files\test\test3.exe
  8. c:\Program Files\test\test4.exe
  9. c:\Program Files\test\test5.exe
复制代码



发表于 2019-8-4 12:17:44 | 显示全部楼层
()里面的内容是可是多行写的,不是只能一行
  1. for %%a in (
  2.     a
  3.     b
  4.     c
  5.     d
  6. ) do echo %%a
复制代码

点评

这个方式可行,但有没有辨法 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 Comma  详情 回复 发表于 2019-8-4 14:46
回复

使用道具 举报

发表于 2019-8-4 13:12:13 | 显示全部楼层
用 simplewall 好啦
回复

使用道具 举报

 楼主| 发表于 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
然后复制全部的路径和档名,但它并没有加上 " " 这种功能。

点评

汗! 你是不是想将一个或多个软件安装目录及子目录下的所有程序禁止联网? 你这个?都批处理了那还能一行一行敲?!  详情 回复 发表于 2019-8-4 23:47
回复

使用道具 举报

发表于 2019-8-4 17:33:55 | 显示全部楼层
可以用伪标签列表 + findstr获取行号 + skip行数.
回复

使用道具 举报

发表于 2019-8-4 22:28:39 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-8-4 22:40 编辑

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


  1. title 防火牆阻擋列表
  2. @echo off
  3. 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
  4. goto :eof

  5. :BlockFirewall
  6. c:\Program Files\test\test1.exe
  7. c:\Program Files\test\test2.exe
  8. c:\Program Files\test\test3.exe
  9. c:\Program Files\test\test4.exe
  10. c:\Program Files\test\test5.exe
复制代码

点评

for 读取本文件的第6行以后的部分 这个是可行 不过 c:\Program Files\test\test1.exe 还是得加上 "c:\Program Files\test\test1.exe" 才行。 dir /b /s *.exe 和 Total Commander 复制文件名是不会加上去的。  详情 回复 发表于 2019-8-5 09:34
回复

使用道具 举报

发表于 2019-8-4 23:47:52 来自手机 | 显示全部楼层
guies 发表于 2019-8-4 14:46
这个方式可行,但有没有辨法
c:\Program Files\test\test1.exe
c:\Program Files\test\test2.exe

汗!

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

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

点评

他可能不想 dir *.exe /b /s /a-d 是想通过 totalcmd 之类的软件 导出一个文件列表,又想把文件列表融入 cmd 脚本,而不单独存在。  详情 回复 发表于 2019-8-5 09:24
回复

使用道具 举报

发表于 2019-8-5 09:24:32 | 显示全部楼层
nttwqz 发表于 2019-8-4 23:47
汗!

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

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

使用道具 举报

 楼主| 发表于 2019-8-5 09:34:53 | 显示全部楼层
本帖最后由 guies 于 2019-8-5 10:48 编辑

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

2019-08-05_094742.jpg
2019-08-05_092905.jpg

点评

for /f 有 delims= 参数用于设置 隔断,设置单词隔断为空,就可以了,会把整行内容作为 %%i  详情 回复 发表于 2019-8-5 16:51
回复

使用道具 举报

发表于 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甚至应该拒绝它运行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 00:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表