使用PowerShell统计子文件夹大小(改良版)

这两天改了改之前的PowerShell统计子文件夹的代码,其实也是蛋疼,单纯看着不顺眼,改的原因是之前的代码没办法实现在统计文件夹大小的同时看到排序的效果,这样的话不方便看出来哪个文件夹大,哪个文件夹小。想着应该是很简单的东西,结果发现还真是有那么点麻烦,原因就是dir本身是不会统计文件夹的大小的,他只会统计单纯的文件大小,这样就很不方便了,开始的时候想用数组来存储统计出来的大小,之后再排序,试了试之后发现确实是可行的,可是问题就是这样做统计出来的文件夹大小确实是带着排序效果的,但是对应的文件夹名去哪了?

看来想实现这种效果必须要将文件夹名和文件夹的大小组成一组对应的关系了,这样的对应关系看着是不是很眼熟?哈希表就是这种形式了。不过说实话哈希表平时自己用的不多,到了用的时候还真得去查查资料了,按照哈希表的形式改了改,终于可以实现了。这么小的需求还得弄半天,看来还是得再锤炼锤炼语法了哈,正确以后再跟大家来分享一些更有用的内容

function filesize ()
{

	[string]$filepath = Read-Host "请输入文件夹路径"
	$sortedlength = @{ }
	$sorted = @{ }
	if ($filepath -eq $null)
	{
		throw "路径不能为空"
	}

	dir -Path $filepath |
	ForEach-Object -Process {
		if ($_.psiscontainer -eq $true)
		{
			$length = 0
			$name=$_.name
			dir -Path $_.fullname -Recurse | ForEach-Object{
				[long]$length += $_.Length
			}
			$sortedlength.Add($name,$length)
		}
	}

	$sorted=$sortedlength.GetEnumerator() | Sort-Object value -Descending
	foreach ($a in $sorted.GetEnumerator())
	{

		if ($a.Value -ge 1MB)
		{
			$l = $a.Value/1MB
			$a.Key + "文件夹的大小为: {0:n1} MB" -f $l
		}
		else
		{
			$l = $a.Value/1KB
			$a.Key + "文件夹的大小为: {0:n1} KB" -f $l
		}
	}
}
filesize

Pause
时间: 2024-11-07 20:44:30

使用PowerShell统计子文件夹大小(改良版)的相关文章

使用PowerShell统计子文件夹大小

分享一个自己写的项目里用到的PowerShell脚本,这个脚本写的很简单,功能也不复杂,主要作用就是统计一个文件夹下的所有子文件夹的大小,这是为了配合统计之前从各个用户计算机收集的信息,每个收集到的信息都会被存档到以这台计算机名称命名的文件夹里,但是哪台计算上收集失败了呢?每个人收集上来的数据大小是多少呢?这个就需要再统计了. 这种功能的软件其实网上有很多,但是对于一个IT Pro来说,什么事都问百度可不是个好习惯,自己动手丰衣足食,反正这也是个很简单的功能不需要太复杂的逻辑,直接上手用Powe

MATLAB检查指定路径中的子文件夹中的文件名中是否带有空格

测试文件夹为: clear;close all;clc; %% %程序实现的功能 %检查指定路径中的子文件夹中的文件名中是否带有空格,并去掉文件名中的空格 %% %程序中用到的之前不清楚的函数如下 %1)strfind(a,b):即找a中是否有b,如果a中有b,则输出b的位置序号.没有输出空数组 %2)isempty(a):判断数组是否为空 %3)strrep(a,b,c):就是把a中所有出现的b换为c %4)movefile(a,b):a移动为b,如C:\test1.jpg移动为C\test2

Java与Python统计文件夹及子文件夹下文件个数

package dang; import java.io.File; /** * @ClassName: FileCount * @Description: TODO() * @author: dangjinhu * @date: 2018年11月1日 下午2:24:58 */ public class FileCount { public static void main(String[] args) { int[] array = new int[]{0,0}; print(new File

键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Set; /** 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt&qu

matlab 把一个文件夹下的所有图片(可以包含在子文件夹下)考到指定文件夹下

clc;clear all; maindir = 'C:\Users\wang\Desktop\iLIDS-VID\i-LIDS-VID\images\cam2';subdir = dir( maindir ); % 先确定子文件夹 for i = 1 : length( subdir ) if( isequal( subdir( i ).name, '.' ) || ... isequal( subdir( i ).name, '..' ) || ... ~subdir( i ).isdir

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

批量改变文件夹和子文件夹中图片格式的两种方法

生活中,我们通常会遇到这种问题:一个文件夹内部有多个子文件夹,每个文件夹内部有很多图片,我们想改变这些图片的格式. 例如.png格式图片支持背景透明,但我们想把它变成背景不透明的.jpg图片.又比如.bmp格式是非压缩图片,我们想把它转换为无损压缩的.png图片以节省存储空间. 如果图片数量很少,很明显我们可以通过Windows自带的画图工具或者其他看图软件通过“另存为”一张张地转换图片格式.但是如果图片很多,怎么办? 这个问题其实有两个关键点: ① 要求批量处理. ② 文件夹中还有子文件夹.

nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容

http://blog.163.com/hule_sky/blog/static/2091622452015112821829773/ node 文件系统fs 为我们提供了一些方法 进行文件和文件夹的读写删除等操作 下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法) 1. fs.stat && fs.statSync 提供了访问文件的属性信息 2. fs.readdir && fs.readdirSync 提供读取文件目录信息 3. fs.unli

java实现文件夹(包括其中的子文件夹、子文件)的复制——递归

这是学校java课的一道实验题,题目如下:编程,根据指定的源和目标位置,完成指定文件或文件夹(包括其中的子文件夹.子文件)的复制. 以下是我的实现,使用了递归: 1 package com.simon.myfinal; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.InputStream; 7 8 /** 9 * Crea