yyz2191958 发表于 2025-2-18 17:31 VBS代码中,Fixed(2) 表示保留2位小数点;PowerShell代码中,{0:N2} 表示保留2位小数点。 |
以前xp 系统有个DLL, 显示文件夹大小 ,特别好用, win10没了 |
martin313 发表于 2025-2-19 12:20 是呀,10 PE 没有效果哦 |
martin313 发表于 2025-2-19 12:20 我试一试 谢谢 |
yyz2191958 发表于 2025-2-19 11:11 要通过修改注册表在Windows中实现文件或文件夹大小显示小数点后三位数,可以尝试以下方法。但需注意,此操作可能影响系统中其他数字的显示格式,请谨慎操作并提前备份注册表。 步骤如下: 打开注册表编辑器 按下 Win + R,输入 regedit,回车并确认管理员权限。 导航至区域格式设置项 转到以下路径: 复制 HKEY_CURRENT_USER\Control Panel\International 修改小数位数键值 找到右侧的 iDigits 键值(控制小数位数)。 双击 iDigits,将其数值数据从默认的 2 改为 3(表示显示三位小数)。 如果不存在 iDigits,右键新建一个字符串值(REG_SZ)并命名为 iDigits,再设置值为 3。 重启资源管理器或系统 按 Ctrl + Shift + Esc 打开任务管理器,找到“Windows 资源管理器”,右键选择“重新启动”。 或直接重启电脑使设置生效。 验证效果 右键查看文件/文件夹属性,检查大小是否显示三位小数(如 1.234 MB)。 注意事项 全局影响:此修改会调整系统中所有依赖区域格式的数字显示,例如部分应用程序中的数字、货币等。 兼容性问题:并非所有Windows版本均支持此调整,部分系统可能忽略此设置或仅影响特定场景。 单位限制:文件资源管理器可能根据单位(KB/MB/GB)自动调整小数位数,例如在GB单位下默认显示更多小数位。 替代方案 如果上述方法无效或不愿影响其他数字格式,可考虑: 使用第三方工具 例如 Folder Size、TreeSize 等工具,支持自定义文件大小显示格式。 脚本或批处理 通过PowerShell脚本获取精确大小并格式化输出。 请确保理解风险后再操作,必要时创建系统还原点。 |
参与人数 1 | 无忧币 +5 | 收起 理由 |
---|---|---|
| + 5 |
yyz2191958 发表于 2025-2-19 11:11 问问deepseek : 如何通过修改注册表,在windows系统里实现查看文件夹或文件属性时,文件夹或文件大小显示小数点后3位数? |
martin313 发表于 2025-2-19 11:04 能不能给出代码?我需要 |
martin313 发表于 2025-2-19 11:03 有一些时候,需要精确一些 |
这个属性要显示小数点位数,通过修改系统注册表,也是可以实现的 |
就是这个干啥用? |
更改路径x盘是你的pe |
yyz2191958 发表于 2025-2-18 17:31 就是有无小数点,有啥用呢??? |
无论是bat、vbs、powershell,实质上还是通过先获取文件或文件夹的属性,根据属性里显示的大小再转换输出的 |
zyy 发表于 2025-2-18 14:34 按楼主的意思是用发送到 但我也是不明白,这个有啥用 |
powershell 法: @echo off setlocal enabledelayedexpansion :: 参数检查 if "%~1"=="" ( echo 请将文件或文件夹拖放到此脚本上。 pause exit /b ) :: 获取规范路径并验证存在性 set "item=%~f1" if not exist "!item!" ( echo 路径不存在: "!item!" pause exit /b ) :: 特殊字符转义处理 set "safe_item=!item:'=''!" set "safe_item=!safe_item:\=\\!" set "safe_item=!safe_item:""=\"!" :: 计算大小 set "size=0" if exist "!item!\" ( for /f "delims=" %%a in ('powershell -Command "$sum=0; $path='%safe_item%'; Get-ChildItem -LiteralPath $path -Recurse -File -ErrorAction SilentlyContinue -Force | %%{ $sum += $_.Length }; $sum" 2^>^&1') do ( set "size=%%a" ) ) else ( for %%F in ("!item!") do set "size=%%~zF" ) :: 错误捕获 if "!size!"=="" ( echo 无法计算大小,请检查路径权限 pause exit /b ) :: 单位转换优化 for /f "tokens=1-2" %%i in ('powershell -Command "$bytes=!size!; if($bytes -eq 0){'0 Bytes'}else{$units='Bytes,KB,MB,GB,TB,PB,EB' -split ','; $i=[math]::Floor([math]::Log($bytes,1024)); $i=[math]::Min($i,6); $num=$bytes/[math]::Pow(1024,$i); $fmt= if($i -eq 0){'{0} {1}'}else{'{0:N2} {1}'}; $fmt -f $num,$units[$i]}"') do ( set "value=%%i" set "unit=%%j" ) :: 结果输出 echo. echo. 大小: !value! !unit! echo. pause |
这个是deepseek修改的,也一样好用: @set @x=1 /* &@echo off set "v=%~1" if not defined v exit /b set "q=0" if exist "%v%\" ( set "q=1" ) else if exist "%v%" ( for %%v in ("%v%") do set "v=%%~zv" ) else ( set "v=%v:,=%" ) cscript /nologo /e:jscript "%~f0" "%v%" %q% pause>nul 2>nul&exit /b */ n=0, v=WSH.arguments, q=v(1); if (q==1) { z=WSH.createObject('scripting.fileSystemObject').getFolder(v(0)).size } else z=+v(0); while (z/1024>=1) {z/=1024; n++; if (n==6) break;} z=z.toFixed(2)+[' 字节',' KB',' MB',' GB',' TB',' PB',' EB'][n]; WSH.echo(z), WSH.quit(); |
本帖最后由 ppll2030 于 2025-2-18 12:48 编辑 哎呀。来晚了。 ![]() 看koko的pe写着支持vbs,用VBS写了一个,也发上来留个记录吧
|
martin313 发表于 2025-2-18 12:36 快捷方式放到 “发送到”,我喜欢自动:字节、KB、MB、GB ... ...,还能自定义小数点位数 |
楼主还没回答我的问题:这用来干嘛呢? |
yyz2191958 发表于 2025-2-18 11:48 我这里测试了一下,也OK。不错 批处理用到了VBS,PE需要支持VBS才行 |
hua_wuxin 发表于 2025-2-18 08:22 看来是 目录的判断方式上有点问题,遇到X盘时 if exsit "PATH"\ |
hua_wuxin 发表于 2025-2-18 11:27 谢谢 我再试一试 |
本帖最后由 hua_wuxin 于 2025-2-18 12:15 编辑 之前括号的处理还是有点问题,%1为空(例如直接双击批处理)时会报错。推荐如下改动: @set @x=1 /* &@echo off &::【代码(最前)和(最后)好像不能有字符。(z.toFixed(2)————两位小数)】 if "%~1"=="" exit /b 3 if not exist %1 exit /b 3 set "v=" &set "v=%~1" set "q=0" dir /ad %1 >nul 2>&1 if %errorlevel% equ 0 (set "q=1") else if exist "%v%" (for %%v in ("%v%") do set "v=%%~zv") else set "v=%v:,=%" cscript /nologo /e:jscript "%~f0" "%v%" %q% (以下未动,略) |
yyz2191958 发表于 2025-2-18 11:07 但不知道,这用来干嘛呢? |
yyz2191958 发表于 2025-2-18 11:07 恭喜恭喜 ![]() |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.