找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 7639|回复: 0

[数值计算] 批处理用powershell换算硬盘容量的函数,怎么再优化一下

[复制链接]
发表于 2025-2-11 14:03:50 | 显示全部楼层 |阅读模式
写了个根据数值(硬盘容量),换算为适当单位(TB,GB,MG,KB,B),显示更直观。
但是不熟悉powershell,感觉函数部分应该能再优化一个
请高手帮忙
  1. @echo off&setlocal EnableDelayedExpansion&cd /d "%~dp0"&title %~nx0

  2. echo  磁盘            剩余         总大小
  3. for /f "tokens=1,2,3 delims= " %%a in ('wmic logicaldisk get Caption^,Size^,FreeSpace ^|findstr [0-9] ') do (
  4.   rem echo %%a        %%b        %%c
  5.   call :getTGMK %%b Size
  6.   set "Size=       !Size!"
  7.   set Size=!Size:~-7!
  8.   call :getTGMK %%c FreeSpace
  9.   set "FreeSpace=       !FreeSpace!"
  10.   set FreeSpace=!FreeSpace:~-7!
  11.   echo   %%a        !Size!        !FreeSpace!
  12. )

  13. echo;&pause
  14. exit


  15. :getTGMK
  16. setlocal
  17. set S=000000000000000000%1
  18. set S=%S:~-18%
  19. if "%S%" GEQ "000001099511627776" (
  20.   for /f %%c in ('powershell -c "[Math]::Truncate(%1/1099511627776)"') do (endlocal & set %2=%%cTB&goto :EOF)
  21.   ) else (
  22.   if "%S%" GEQ "000000001073741824" (
  23.     for /f %%c in ('powershell -c "[Math]::Truncate(%1/1073741824)"') do (endlocal & set %2=%%cGB&goto :EOF)
  24.     ) else (
  25.     if "%S%" GEQ "000000000001048576" (
  26.       for /f %%c in ('powershell -c "[Math]::Truncate(%1/1048576)"') do (endlocal & set %2=%%cMB&goto :EOF)
  27.       ) else (
  28.       if "%S%" GEQ "000000000000001024" (
  29.         for /f %%c in ('powershell -c "[Math]::Truncate(%1/1024)"') do (endlocal & set %2=%%cKB&goto :EOF)
  30.         ) else (
  31.         endlocal & set %2=%1B&goto :EOF
  32. ))))
  33. goto :EOF
复制代码
[img][/img]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:54 , Processed in 0.016788 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表