Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file windows批处理将字节转换为GB_Batch File_Size - Fatal编程技术网

Batch file windows批处理将字节转换为GB

Batch file windows批处理将字节转换为GB,batch-file,size,Batch File,Size,如何将结果从字节转换为千兆字节?有关示例,请参见此脚本: @echo off set file=C:\Users\%username%\AppData\Local\Microsoft\Outlook\%username%.ost %1 %0 :: %file% set len=%~z2 echo %len% %username% >>"C:\Desktop\size.txt" 正如Michael在回答中所说,batch可以通过SET/A进行数学计算。但计算严格限于整数;没有

如何将结果从字节转换为千兆字节?有关示例,请参见此脚本:

@echo off

set file=C:\Users\%username%\AppData\Local\Microsoft\Outlook\%username%.ost

%1 %0 :: %file%
set len=%~z2

echo %len%  %username% >>"C:\Desktop\size.txt"

正如Michael在回答中所说,batch可以通过
SET/A
进行数学计算。但计算严格限于整数;没有本机浮点数学。整数在内部表示为有符号32位整数。因此,以字节为单位的最大可能数等于~2G字节。有一些批处理例程是为了处理大量数据而编写的,但我不建议使用它们

将字节转换为千兆字节的公式非常简单:

Gigabytes = Bytes / 1024 / 1024 / 1024
在紧要关头,您可以执行混合脚本编写,让批处理调用powershell进行计算

for /f %%N in ('powershell %~z2/1024/1024/1024') do set len=%%N

但这是极其缓慢和低效的。您最好使用支持浮点的脚本语言编写整个脚本—可能是PowerShell、VBScript或JScript。

正如Michael在回答中所说,batch可以通过
SET/a
进行数学计算。但计算严格限于整数;没有本机浮点数学。整数在内部表示为有符号32位整数。因此,以字节为单位的最大可能数等于~2G字节。有一些批处理例程是为了处理大量数据而编写的,但我不建议使用它们

将字节转换为千兆字节的公式非常简单:

Gigabytes = Bytes / 1024 / 1024 / 1024
在紧要关头,您可以执行混合脚本编写,让批处理调用powershell进行计算

for /f %%N in ('powershell %~z2/1024/1024/1024') do set len=%%N

但这是极其缓慢和低效的。您最好使用支持浮点的脚本语言编写整个脚本—可能是PowerShell、VBScript或JScript。

您可以使用以下方法:

set len=%~z2
set /A GB=%len:~0,-3%/1024/1024
set len=%~z2
set /A GBtimes100=%len:~0,-3%/1024*100/1024
echo %GBtimes100:~0,-2%.%GBtimes100:~-2%  %username% >>"C:\Desktop\size.txt"
这相当于这个公式:千兆字节=字节/1000/1024/1024。数值结果实际上与原始公式相同,但此方法允许正确转换大于2000 GB的文件大小

如果要获得小数点后两位的结果,请使用以下方法:

set len=%~z2
set /A GB=%len:~0,-3%/1024/1024
set len=%~z2
set /A GBtimes100=%len:~0,-3%/1024*100/1024
echo %GBtimes100:~0,-2%.%GBtimes100:~-2%  %username% >>"C:\Desktop\size.txt"

Antonio

您可以使用以下方法:

set len=%~z2
set /A GB=%len:~0,-3%/1024/1024
set len=%~z2
set /A GBtimes100=%len:~0,-3%/1024*100/1024
echo %GBtimes100:~0,-2%.%GBtimes100:~-2%  %username% >>"C:\Desktop\size.txt"
这相当于这个公式:千兆字节=字节/1000/1024/1024。数值结果实际上与原始公式相同,但此方法允许正确转换大于2000 GB的文件大小

如果要获得小数点后两位的结果,请使用以下方法:

set len=%~z2
set /A GB=%len:~0,-3%/1024/1024
set len=%~z2
set /A GBtimes100=%len:~0,-3%/1024*100/1024
echo %GBtimes100:~0,-2%.%GBtimes100:~-2%  %username% >>"C:\Desktop\size.txt"

安东尼奥

或者如果是>到任何大小。。。通过txt?或is>发送消息,大小不限。。。通过txt发送消息?谢谢,伙计…但是我能做些什么使控制台不显示在屏幕上?@chesare-我不理解你的评论/问题。当我执行回答中的语句时,只要ECHO关闭,我就看不到屏幕上的任何输出。谢谢你,伙计……但是我能做些什么使控制台不显示在屏幕上?@chesare-我不理解你的评论/问题。当我执行我的回答中的语句时,只要ECHO关闭,我就看不到屏幕上的任何输出。我喜欢你的解决方案,但如果你这样做((10000000000/1024)/1024)/93.~((10000000000/1000)/1024)/1024)=95.~在我的情况下,2gb的差异有点重要。我喜欢你的解决方案,但是如果你这样计算(((10000000000/1024)/1024)/1024)=93.((10000000000/1000)/1024)/1024)=95.~在我的例子中,2gb的差异是有点必要的。