在具有 dism 功能的批处理文件中使用通配符
Using wildcard in a batch file with dism function
我将如何为此使用通配符:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.1.16.0
我试过这个:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.*.*.*
您不能在 /PackageName
参数中使用通配符。您可以检索完整的软件包列表,在结果集中搜索所需的软件包,然后 运行 每个结果的删除命令。
首先,获取所有包:
$packages = dism /online /Get-Packages
接下来,使用正则表达式仅查找您关心的包:
$matched_packages = $packages | Select-String "Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$"
在上面的命令中,如果需要,可以将正则表达式 Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$
更改为更合适的正则表达式以进行搜索。
接下来,筛选出匹配项中的值,以便更容易迭代:
$matched_values = $matched_packages | ForEach-Object { $_.Matches[0].Value }
最后,运行 每次匹配的 remove-package
命令:
$matched_values | % {dism /online /remove-package /PackageName:$_}
如果您愿意,可以将其设为单行:
dism /online /Get-Packages | Select-String "Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$" | ForEach-Object { $_.Matches[0].Value } | % {dism /online /remove-package /PackageName:$_}
可能有更简单的方法来构造这些命令(我的 PowerShell 有点生疏)但是上面的示例将对正则表达式中指定的每个已安装版本的包执行 remove-package
命令。
我将如何为此使用通配符:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.1.16.0
我试过这个:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.*.*.*
您不能在 /PackageName
参数中使用通配符。您可以检索完整的软件包列表,在结果集中搜索所需的软件包,然后 运行 每个结果的删除命令。
首先,获取所有包:
$packages = dism /online /Get-Packages
接下来,使用正则表达式仅查找您关心的包:
$matched_packages = $packages | Select-String "Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$"
在上面的命令中,如果需要,可以将正则表达式 Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$
更改为更合适的正则表达式以进行搜索。
接下来,筛选出匹配项中的值,以便更容易迭代:
$matched_values = $matched_packages | ForEach-Object { $_.Matches[0].Value }
最后,运行 每次匹配的 remove-package
命令:
$matched_values | % {dism /online /remove-package /PackageName:$_}
如果您愿意,可以将其设为单行:
dism /online /Get-Packages | Select-String "Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$" | ForEach-Object { $_.Matches[0].Value } | % {dism /online /remove-package /PackageName:$_}
可能有更简单的方法来构造这些命令(我的 PowerShell 有点生疏)但是上面的示例将对正则表达式中指定的每个已安装版本的包执行 remove-package
命令。