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

Windows程序字体显示异常求助:PowerShell命令疑似引发问题

Windows程序字体显示异常问题排查与修复建议
  • 问题描述:开发的Windows程序功能正常,但字体显示极为难看,调试后怀疑与调用PowerShell获取文件夹大小的命令相关,示例命令如下:
for /f "usebackq tokens=*" %%a in (`powershell -command "('{0:N1}' -f ((Get-ChildItem -Path 'C:\$Recycle.Bin\%sid%' -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB))"`) do set size1=%%a

程序中包含大量同类获取文件夹大小的命令,且CLI集成了选择、选项高亮等功能,代码量较大无法完整提供,程序运行截图:
程序运行截图

可能的原因及修复方案

  1. 编码不匹配导致渲染异常
    命令行调用PowerShell时,默认输出编码可能和程序的字体渲染编码不一致,引发乱码或显示畸形。可以在PowerShell命令中强制指定输出编码:
    修改后的示例命令(指定UTF-8编码):

    for /f "usebackq tokens=*" %%a in (`powershell -OutputEncoding utf8 -command "('{0:N1}' -f ((Get-ChildItem -Path 'C:\$Recycle.Bin\%sid%' -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB))"`) do set size1=%%a
    
  2. 格式化输出的字符适配问题
    PowerShell中{0:N1}的格式化输出会带千分位分隔符等特殊字符,若程序使用的字体不支持这些字符,就会显示异常。建议把格式化逻辑移到程序内部处理:
    先让PowerShell输出原始数值:

    for /f "usebackq tokens=*" %%a in (`powershell -command "((Get-ChildItem -Path 'C:\$Recycle.Bin\%sid%' -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB)"`) do set size1=%%a
    

    再在程序里对size1的值进行小数位数格式化,避免CLI输出的特殊字符干扰字体渲染。

  3. 批量命令拖慢UI线程
    大量递归遍历文件夹的PowerShell命令会占用较多系统资源,可能导致UI线程卡顿,间接影响字体渲染的流畅性。可以优化命令执行效率:

    • 改用更高效的System.IO类方法替代Get-ChildItem:
      [System.IO.Directory]::EnumerateFiles('C:\$Recycle.Bin\%sid%', '*', [System.IO.SearchOption]::AllDirectories) | ForEach-Object { [System.IO.FileInfo]::new($_).Length } | Measure-Object -Sum | Select-Object -ExpandProperty Sum
      
    • 尝试批量获取多个文件夹大小,减少PowerShell进程的启动次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:55:11