1

結果をバイトからギガバイトに変換するにはどうすればよいですか? 例については、次のスクリプトを参照してください。

@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"
4

2 に答える 2

2

次の方法を使用できます。

set len=%~z2
set /A GB=%len:~0,-3%/1024/1024

これは、次の式と同等です。ギガバイト=バイト/ 1000/1024/1024。数値結果は元の式と実質的に同じですが、この方法では、2000GBを超えるファイルサイズを正しく変換できます。

小数点以下2桁の結果を取得する場合は、次の方法を使用します。

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

アントニオ

于 2013-02-15T05:04:00.943 に答える
2

マイケルが彼の答えで言っているように、バッチはを介して数学の計算を行うことができますSET /A。ただし、計算は厳密に整数に制限されています。ネイティブの浮動小数点演算はありません。また、整数は、符号付き32ビット整数として内部的に表されます。したがって、バイト単位で可能な最大数は、最大2ギガバイトに相当します。多数を処理するために作成されたバッチルーチンがありますが、それらを使用することはお勧めしません。

バイトをギガバイトに変換する式は非常に単純です。

Gigabytes = Bytes / 1024 / 1024 / 1024

ピンチでは、ハイブリッドスクリプトを実行し、PowerShellをバッチ呼び出しして計算を行うことができます。

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

しかし、それは非常に遅く、非効率的です。浮動小数点をサポートするスクリプト言語(PowerShell、VBScript、またはJScriptなど)でスクリプト全体を作成する方がはるかに良いでしょう。

于 2013-02-14T20:05:41.077 に答える