无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4670|回复: 24
打印 上一主题 下一主题

[求助] 批处理关闭功能

[复制链接]
跳转到指定楼层
1#
发表于 2023-7-12 10:33:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

利用命令关闭一些Windows功能,如:TFTP、Microsoft-Hyper-V用此以TFTP为例
Dism /online /Get-FeatureInfo /FeatureName:TFTP  均运行正常,可关闭,
为了方便,把需要禁用的功能名写入一个TXT记事本本內
用以下命令执行:

for /F %%i in (' Type "%~dp0Windows\Remove.TXT" 2^>nul')
for /F "tokens=2 delims=: " %%a in ('dism /online /get-features ^| Findstr /I /C:"FeatureName : %%i"') do if "%%a" NEQ "" Call Dism /online /Disable-Feature /FeatureName:%%a >nul
   )
运行之后无效果。麻烦大佬指点
25#
发表于 2023-10-18 10:29:20 | 只看该作者
进来学习
回复

使用道具 举报

24#
发表于 2023-10-12 08:57:10 | 只看该作者
慢慢调试
回复

使用道具 举报

23#
发表于 2023-10-11 13:36:51 | 只看该作者
感谢分享
回复

使用道具 举报

22#
发表于 2023-7-17 20:27:26 | 只看该作者
这个要学些知识,
回复

使用道具 举报

21#
发表于 2023-7-13 21:25:36 | 只看该作者
本帖最后由 nttwqz 于 2023-7-13 21:28 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. pause
  4. pushd %~dp0
  5. for /f "delims=" %%a in (remove.txt) do (
  6.     if not defined feature_list (
  7.         set "feature_list=/featurename:%%a"
  8.     ) else (
  9.         set "feature_list=!feature_list! /featurename:%%a"
  10.     )
  11. )

  12. if defined feature_list (
  13.     dism /online /disable-feature !feature_list! /norestart
  14.     if !errorlevel!==0 (
  15.         color 2f
  16.     ) else (
  17.         color 4f
  18.     )
  19. ) else (
  20.     color 4f
  21.     echo;错误!需要禁用的功能列表为空...
  22. )
  23. echo;
  24. pause
复制代码

功能每行一个,如果功能名称有空格,请用英文""

回复

使用道具 举报

20#
发表于 2023-7-13 17:26:50 | 只看该作者
本帖最后由 conlin888 于 2023-7-13 17:35 编辑

或者:
@echo off
for /F "tokens=2 delims=:" %%a in ('dism /online /get-features^|find /i " : "') do (
    for /f "delims=" %%I in ('Type "%~dp0Windows\Remove.TXT"') do (
    if /i " %%I"=="%%a" Dism /online /Disable-Feature /FeatureName:"%%I"
    )
)
echo.&echo.&pause
回复

使用道具 举报

19#
发表于 2023-7-13 17:22:54 | 只看该作者
多谢分享!
回复

使用道具 举报

18#
发表于 2023-7-13 17:01:38 | 只看该作者
@echo off
for /F "delims=" %%I in ('Type "%~dp0Windows\Remove.TXT" 2^>nul') do (
   for /F "tokens=2 delims=:" %%a in ('dism /online /get-features^|Find /i ": %%I"') do (
   if /i " %%I"=="%%a" Dism /online /Disable-Feature /FeatureName:"%%I"
   )
)
echo.&echo.&pause
回复

使用道具 举报

17#
发表于 2023-7-13 16:10:22 | 只看该作者
wenbieba 发表于 2023-7-13 15:35
Get-Content %Lists%\remove.txt
这种路径写法对吗

powershell里的环境变量不是用%%引用

1. 自定义变量:$list = "完整路径",然后用$list引用
2. 环境变量:$env:TEMP
回复

使用道具 举报

16#
 楼主| 发表于 2023-7-13 15:35:02 | 只看该作者

Get-Content %Lists%\remove.txt
这种路径写法对吗
回复

使用道具 举报

15#
发表于 2023-7-13 15:09:03 | 只看该作者
wenbieba 发表于 2023-7-13 14:54
文本格式,remove.TXT,文本下一行一列:

TFTP

那你试试
  1. powershell "(Get-Content .\remove.txt).ForEach({Get-WindowsOptionalFeature -FeatureName $_ -online|Disable-WindowsOptionalFeature -online})"
复制代码

点评

Get-Content %Lists%\remove.txt 这种路径写法对吗  详情 回复 发表于 2023-7-13 15:35
回复

使用道具 举报

14#
 楼主| 发表于 2023-7-13 14:54:00 | 只看该作者
china.gaofeng 发表于 2023-7-13 13:45
你remove.txt文件里的内容是什么格式?

文本格式,remove.TXT,文本下一行一列:

TFTP
Microsoft-Hyper-V
回复

使用道具 举报

13#
发表于 2023-7-13 13:45:42 | 只看该作者
wenbieba 发表于 2023-7-12 17:59
把Remove.TXT和批处理放同一文件夹也报同样错

你remove.txt文件里的内容是什么格式?

点评

文本格式,remove.TXT,文本下一行一列: TFTP Microsoft-Hyper-V …  详情 回复 发表于 2023-7-13 14:54
回复

使用道具 举报

12#
发表于 2023-7-13 02:23:54 | 只看该作者
感谢分享
回复

使用道具 举报

11#
发表于 2023-7-12 19:22:09 | 只看该作者
感谢分享
回复

使用道具 举报

10#
 楼主| 发表于 2023-7-12 17:59:09 | 只看该作者
china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些

把Remove.TXT和批处理放同一文件夹也报同样错
回复

使用道具 举报

9#
 楼主| 发表于 2023-7-12 17:54:38 | 只看该作者
china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些

Get-Content .\remove.txt此处路径该如何指定,.txt文件未在当前根目录,在当前文件夹下的子目录里边,Get-Content %Lists%\FeaturesList.txt,这种写法提示Get-WindowsOptionalFeature : 找不到接受实际参数“IIS-HttpErrors”的位置形式参数。
所在位置 行:1 字符: 78
+ ... turesList.txt).ForEach({Get-WindowsOptionalFeature $_ -online|Disable ...
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-WindowsOptionalFeature],ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.Dism.Commands.GetWindowsOptionalFeatureCommand
回复

使用道具 举报

8#
发表于 2023-7-12 15:13:38 | 只看该作者
学习学习
回复

使用道具 举报

7#
 楼主| 发表于 2023-7-12 14:29:52 | 只看该作者
china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些

谢谢大佬,有时间要学习学习powershell
回复

使用道具 举报

6#
 楼主| 发表于 2023-7-12 14:00:37 | 只看该作者
bjay2008xmy 发表于 2023-7-12 12:26
有了现成的,就不想再费脑筋想了~

并非如此,折腾好久没有效果,才来求助。从大佬的诊断中学习
回复

使用道具 举报

5#
发表于 2023-7-12 12:38:09 | 只看该作者

多谢分享
回复

使用道具 举报

4#
发表于 2023-7-12 12:26:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

3#
发表于 2023-7-12 12:22:26 | 只看该作者
调用powershell更方便些


  1. powershell "(Get-Content .\remove.txt).ForEach({Get-WindowsOptionalFeature $_ -online|Disable-WindowsOptionalFeature -online})"
复制代码

点评

把Remove.TXT和批处理放同一文件夹也报同样错  详情 回复 发表于 2023-7-12 17:59
Get-Content .\remove.txt此处路径该如何指定,.txt文件未在当前根目录,在当前文件夹下的子目录里边,Get-Content %Lists%\FeaturesList.txt,这种写法提示Get-WindowsOptionalFeature : 找不到接受实际参数“IIS-H  详情 回复 发表于 2023-7-12 17:54
谢谢大佬,有时间要学习学习powershell  详情 回复 发表于 2023-7-12 14:29
回复

使用道具 举报

2#
发表于 2023-7-12 11:01:39 | 只看该作者
照着这个来!
  1. @echo off
  2. pushd "%~dp0"

  3. set MT=H:\1

  4. reg load HKLM\SOFT "%MT%\Windows\System32\config\software"

  5. for /f %%i in ('findstr /i . Remove.txt 2^>nul') do ( call :SETVALUE %%i )

  6. reg unload HKLM\SOFT

  7. for /f %%i in ('findstr /i . Remove.txt 2^>nul') do dism /NoRestart /image:%MT% /Remove-package /Packagename:%%i

  8. pause
  9. exit
复制代码


点评

有了现成的,就不想再费脑筋想了~  详情 回复 发表于 2023-7-12 12:26
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 06:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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