wenbieba 发表于 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
   )
运行之后无效果。麻烦大佬指点

fulibo 发表于 2023-7-12 11:01:39

照着这个来!@echo off
pushd "%~dp0"

set MT=H:\1

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

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

reg unload HKLM\SOFT

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

pause
exit

china.gaofeng 发表于 2023-7-12 12:22:26

调用powershell更方便些


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

bjay2008xmy 发表于 2023-7-12 12:26:02

system110 发表于 2023-7-12 12:38:09


多谢分享

wenbieba 发表于 2023-7-12 14:00:37

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

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

wenbieba 发表于 2023-7-12 14:29:52

china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些

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

yc2428 发表于 2023-7-12 15:13:38

学习学习

wenbieba 发表于 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: (:) ,ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.Dism.Commands.GetWindowsOptionalFeatureCommand

wenbieba 发表于 2023-7-12 17:59:09

china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些

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

yangnaohai 发表于 2023-7-12 19:22:09

感谢分享

seeimpact153 发表于 2023-7-13 02:23:54

感谢分享

china.gaofeng 发表于 2023-7-13 13:45:42

wenbieba 发表于 2023-7-12 17:59
把Remove.TXT和批处理放同一文件夹也报同样错

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

wenbieba 发表于 2023-7-13 14:54:00

china.gaofeng 发表于 2023-7-13 13:45
你remove.txt文件里的内容是什么格式?

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

TFTP
Microsoft-Hyper-V

china.gaofeng 发表于 2023-7-13 15:09:03

wenbieba 发表于 2023-7-13 14:54
文本格式,remove.TXT,文本下一行一列:

TFTP


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

wenbieba 发表于 2023-7-13 15:35:02

china.gaofeng 发表于 2023-7-13 15:09
那你试试

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

china.gaofeng 发表于 2023-7-13 16:10:22

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

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

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

conlin888 发表于 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

xcfgw8 发表于 2023-7-13 17:22:54

多谢分享!

conlin888 发表于 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

nttwqz 发表于 2023-7-13 21:25:36

本帖最后由 nttwqz 于 2023-7-13 21:28 编辑

@echo off
setlocal enabledelayedexpansion
pause
pushd %~dp0
for /f "delims=" %%a in (remove.txt) do (
    if not defined feature_list (
      set "feature_list=/featurename:%%a"
    ) else (
      set "feature_list=!feature_list! /featurename:%%a"
    )
)

if defined feature_list (
    dism /online /disable-feature !feature_list! /norestart
    if !errorlevel!==0 (
      color 2f
    ) else (
      color 4f
    )
) else (
    color 4f
    echo;错误!需要禁用的功能列表为空...
)
echo;
pause
功能每行一个,如果功能名称有空格,请用英文""

wfg1555 发表于 2023-7-17 20:27:26

这个要学些知识,

wjggo6210 发表于 2023-10-11 13:36:51

感谢分享

rbwrbw 发表于 2023-10-12 08:57:10

慢慢调试

yyz2191958 发表于 2023-10-18 10:29:20

进来学习
页: [1]
查看完整版本: 批处理关闭功能