2014-06-06 55 views
0

我需要了解的遠程特定文件的大小,如何將FORFILES @fsize輸出轉換爲GB?

的想法是輸入類似:

"ip address" batchfile.cmd 

所需的輸出:

fileName1.ost size 10GB 
fileName2.ost size 20GB 
fileName3.ost size 20GB 
fileName4.ost size 20GB 

這些代碼的作品,但大小以字節顯示

C:\>forfiles /P %userprofile% /M *.ost /S /C "cmd /c echo @file @fsize" 

非常感謝

回答

2

只是一個粗略的解決方案。不準確Calcs(計算),但對你的問題可能就足夠

@echo off 
    setlocal enableextensions enabledelayedexpansion 

    for /r "%userprofile%" %%a in ("*.ost") do (
     set "size=%%~za" & set "unit=B" 
     for %%b in (KB MB GB TB PB EB ZB YB) do if 1024 lss !size! (
      set "size=!size:~0,-3!" & set "unit=%%b" 
     ) 
     echo %%~fa %%~za !size!!unit! 
    ) 

    endlocal 

EDITED對於一個小更精確的版本

@echo off 
    setlocal enableextensions enabledelayedexpansion 

    for /r "%userprofile%" %%a in ("*.ost") do (
     set "size=%%~za" & set "unit=B" 
     for %%b in (KB MB GB TB PB EB ZB YB) do if 1024 lss !size! (
      set "unit=%%b" 
      if !size! lss 2147483647 (set /a "size=size/1024") else (set "size=!size:~0,-3!") 
     ) 
     echo %%~fa %%~za !size!!unit! 
    ) 

    endlocal 
+0

'EB ZB YB'?你對未來的想法太深了;-) – Stephan

+0

@Stephan,我一直在做系統管理20年,並且看到郵件系統需要的存儲如何增加。所以是的,至少可以工作一年或兩年的東西:D –

+0

@MCND謝謝 – pedaleo