以下代码以 GB 为单位返回系统驱动器的大小:
!include logiclib.nsh
section
system::call 'kernel32::GetDiskFreeSpaceEx(t"$windir", *l.r0, *l, *l)'
size:
${if} $0 u> 1024
system::int64op $0 / 1024
pop $0
goto size
${endif}
detailprint $0
sectionend
如何将大小四舍五入到最接近的小数点后 1 位或 2 位,如使用内置目录页面所见?我试过
intop
但它只是返回0
。 Math::Script
插件我不懂,如果能用
这可能更像是一个数学问题而不是 NSIS 问题,但这里有一个简单的解决方案:
!include logiclib.nsh
Section
System::Call 'KERNEL32::GetDiskFreeSpaceEx(t"$windir", *l.r0, *l, *l)'
StrCpy $1 00
size:
StrCpy $1 $1 2 ; A lazy way to "round"
${If} $0 U> 1024
System::Int64op $0 % 1024
Pop $1
System::Int64op $0 / 1024
Pop $0
Goto size
${EndIf}
DetailPrint $0.$1
SectionEnd