如果文件夹大小大于或等于600MB,我必须应用命令。
我试过这样的事情
#include <map>
#include <set>
#include <utility>
typedef struct d_o_pair
{
int d_number;
int o_number;
bool operator <( const d_o_pair &rhs ) const
{
return d_number < rhs.d_number || ( !( rhs.d_number < d_number ) && ( o_number < rhs.o_number ) );
}
} d_o_pair;
typedef std::set<d_o_pair> d_o_set;
int main()
{
std::map<int, d_o_set> my_map;
my_map[5].insert( { 0, 2 } );
}
它不起作用。它写入文件夹的正确大小但不遵守IF语句。我该怎么办?
答案 0 :(得分:2)
最简单的方法是使用FileSystemObject
COM对象:
function Get-FolderSize($path) {
(New-Object -COM 'Scripting.FileSystemObject').GetFolder($path).Size
}
但我建议不要在Get-Size
函数中进行格式化。通常最好让函数返回原始大小,并在实际显示值时进行计算和格式化。
像这样使用:
Get-ChildItem 'D:\home' | ? { $_.PSIsContainer -and Get-FolderSize $_.FullName -gt 600MB }
或者像这样:
Get-ChildItem 'D:\home' | ? { $_.PSIsContainer } | % {
if (Get-FolderSize $_.FullName -gt 600MB) {
'Not OK.'
} else {
'OK template.'
}
}
在PowerShell v3及更新版本上,您可以使用Get-ChildItem -Directory
代替Get-ChildItem | ? { $_.PSIsContainer }
。
答案 1 :(得分:0)
使用$ size -gt&#34; 600&#34;进行比较时该值被视为字符串。因此没有得到正确的结果。
尝试使用整数进行比较。