批处理关闭功能
利用命令关闭一些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
)
运行之后无效果。麻烦大佬指点
照着这个来!@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
调用powershell更方便些
powershell "(Get-Content .\remove.txt).ForEach({Get-WindowsOptionalFeature $_ -online|Disable-WindowsOptionalFeature -online})"
多谢分享 bjay2008xmy 发表于 2023-7-12 12:26
有了现成的,就不想再费脑筋想了~
并非如此,折腾好久没有效果,才来求助。从大佬的诊断中学习 china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些
谢谢大佬,有时间要学习学习powershell 学习学习 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
china.gaofeng 发表于 2023-7-12 12:22
调用powershell更方便些
把Remove.TXT和批处理放同一文件夹也报同样错 感谢分享 感谢分享 wenbieba 发表于 2023-7-12 17:59
把Remove.TXT和批处理放同一文件夹也报同样错
你remove.txt文件里的内容是什么格式? china.gaofeng 发表于 2023-7-13 13:45
你remove.txt文件里的内容是什么格式?
文本格式,remove.TXT,文本下一行一列:
TFTP
Microsoft-Hyper-V
… wenbieba 发表于 2023-7-13 14:54
文本格式,remove.TXT,文本下一行一列:
TFTP
那你试试
powershell "(Get-Content .\remove.txt).ForEach({Get-WindowsOptionalFeature -FeatureName $_ -online|Disable-WindowsOptionalFeature -online})" china.gaofeng 发表于 2023-7-13 15:09
那你试试
Get-Content %Lists%\remove.txt
这种路径写法对吗 wenbieba 发表于 2023-7-13 15:35
Get-Content %Lists%\remove.txt
这种路径写法对吗
powershell里的环境变量不是用%%引用
1. 自定义变量:$list = "完整路径",然后用$list引用
2. 环境变量:$env:TEMP @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 多谢分享! 本帖最后由 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: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
功能每行一个,如果功能名称有空格,请用英文""
这个要学些知识, 感谢分享 慢慢调试 进来学习
页:
[1]