2015-07-21 366 views
0

我正在一家軟件公司工作。我用批處理文件來獲取使用dir和du的文件夾大小,但是它在dir中花了1秒,在du花費了600毫秒來計算5GB的文件夾大小。但我希望產品更快。那麼有沒有可以更快執行任務的命令行支持的命令或工具?命令可以是任何類型(BAT,VBS,PowerShell的....)使用dir或du命令獲取文件夾大小的命令或工具

預先感謝您的....

+0

檢查這個 - http://stackoverflow.com/questions/30513287/faster-way-to-get-folder-size-with-batch-script – npocmaka

+0

它是好的robocopy之一,但它花了50毫秒執行解決方案下面在這裏使用新的對象完成相同的工作在30毫秒 –

+0

但問題是它不會工作在Windows XP –

回答

2

PowerShell的解決方案。

更多的https://technet.microsoft.com/en-us/library/ff730945.aspx

$colItems = (Get-ChildItem C:\temp -Recurse | Measure-Object -Property length -Sum) 
"{0:N2}" -f ($colItems.sum/1MB) + " MB" 

措施:

PS C:\> Measure-Command -Expression { 
$colItems = (Get-ChildItem C:\temp -Recurse | Measure-Object -Property length -Sum) 
"{0:N2}" -f ($colItems.sum/1MB) + " MB" 
} 


Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 2 
Milliseconds  : 509 
Ticks    : 25092400 
TotalDays   : 2,90421296296296E-05 
TotalHours  : 0,000697011111111111 
TotalMinutes  : 0,0418206666666667 
TotalSeconds  : 2,50924 
TotalMilliseconds : 2509,24 

同樣與外殼COM對象:

$objFSO = New-Object -ComObject Scripting.FileSystemObject 
"{0:N2}" -f (($objFSO.GetFolder("C:\temp").Size)/1MB) + " MB" 

措施:

PS C:\> Measure-Command -Expression { 
$objFSO = New-Object -ComObject Scripting.FileSystemObject 
"{0:N2}" -f (($objFSO.GetFolder("C:\temp").Size)/1MB) + " MB" 
} 


Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 0 
Milliseconds  : 719 
Ticks    : 7197995 
TotalDays   : 8,33101273148148E-06 
TotalHours  : 0,000199944305555556 
TotalMinutes  : 0,0119966583333333 
TotalSeconds  : 0,7197995 
TotalMilliseconds : 719,7995 
+0

謝謝你的回覆.. –

+0

有沒有什麼辦法可以在Windows XP上實現它,因爲我們有30%的客戶端運行在Windows XP上。我們可以在其他腳本中嵌入這些代碼嗎?如果是的話,怎麼樣?或者在其他腳本中是否有類似的操作。 –

+0

當然!假設您安裝了PowerShell,您可以在Windows XP上輕鬆執行這些Powershell腳本。只需使用Invoke-Command cmdlet或通過GPO登錄腳本運行此操作即可。 –