You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows System32多语言路径的PowerShell通配符适配需求

解决方案:适配多语言环境下的Prndrvr.vbs路径

方法一:通过系统语言代码动态拼接路径

直接获取当前系统的UI语言代码,精准定位对应目录,这是最可靠的方式:

  • CMD命令实现:
@echo off
:: 获取当前系统语言代码(如en-GB、de-DE)
for /f "tokens=2 delims==" %%G in ('reg query "HKCU\Control Panel\International" /v LocaleName') do set "langCode=%%G"
:: 执行脚本
cscript "C:\Windows\System32\Printing_Admin_Scripts\%langCode%\Prndrvr.vbs" [你的打印机安装参数]
  • PowerShell实现:
$langCode = (Get-Culture).Name
cscript "C:\Windows\System32\Printing_Admin_Scripts\$langCode\Prndrvr.vbs" [你的打印机安装参数]

方法二:遍历匹配语言目录查找脚本

如果不确定系统语言,或者需要兼容多语言目录存在的情况,可以遍历Printing_Admin_Scripts下符合xx-xx格式的目录,找到存在Prndrvr.vbs的路径并执行:

@echo off
for /d %%L in ("C:\Windows\System32\Printing_Admin_Scripts\*-*") do (
    if exist "%%L\Prndrvr.vbs" (
        cscript "%%L\Prndrvr.vbs" [你的打印机安装参数]
        goto :EXIT_LOOP
    )
)
:EXIT_LOOP

注:这个逻辑会执行第一个找到的脚本,若存在多个语言目录,可根据需求调整循环逻辑。

方法三:递归查找脚本文件

直接递归查找System32下的Prndrvr.vbs文件,无需关注语言目录:

@echo off
for /f "delims=" %%F in ('where /r "C:\Windows\System32" Prndrvr.vbs') do (
    cscript "%%F" [你的打印机安装参数]
    goto :EXIT_LOOP
)
:EXIT_LOOP

为什么直接用*通配符无效?

Windows CMD中,*通配符无法直接解析引号包裹路径中的目录部分(如"C:\...\*\Prndrvr.vbs"),因为CMD的通配符匹配逻辑仅针对文件名,无法直接作用于目录层级,因此需要通过上述循环或查找命令来间接处理。

内容的提问来源于stack exchange,提问作者fil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:48:48