powershell复制目录结构和删除空目录
来源:互联网 发布:弗林认罪 知乎 编辑:程序博客网 时间:2024/05/18 01:04
文件夹操作
自从用了bat的加强版:powershell,不得不说,很好很强大。
微软从win7开始,就已经将其嵌入到系统,并希望用户使用它。在这里需要说的是vs也支持powershell的调试,它已经像一门语言了。在开发过程中一些繁琐可批量的操作使用powershell十分便捷。
下面说说两个简单的操作:
复制目录结构
顾名思义,就是将原目录的结构复制到目标目录而不拷贝其他文件。
直接上代码
传入源目录和目标目录的路径,将源目录的目录结构拷贝至目标目录。
function CreatEmptyDirs([string]$src, [string]$des) { get-childitem $src -recurse -directory | foreach-object { $tmp = $_.fullname;$tmp = $tmp.substring( $src.length, $tmp.length - $src.length ); if( -not (test-path $des$tmp) ) { new-item -path $des$tmp -type Directory -force } } }
先深度遍历所有源目录下的文件夹(可以这样直接获取文件夹),通过管道处理:如果目标路径没有该文件夹的时候复制文件夹到目标路径。
删除空目录
嗯,如果一个目录比较深,我们可以用一个简单的方法去删除空目录而保留有文件的目录。就是逐级删除空目录。
下面是获取文件大小的函数
传入目录路径,获取目录大小。
function GetDirSize([string]$dir){ $size = 0 $files = get-childitem $dir -file -recurse -erroraction silentlycontinue foreach($file in $files){$size = $size + $file.length} return $size}
这里要将size变量置为零,虽然默认是局部变量,但是在运行时候发现它的初始值往往不为零,可能是在运行期间扫描较快,在被函数里的变量被销毁时被访问。
另外-erroraction参数很重要,因为目录可能已经被删除掉了。
传入目录路径,删除该目录下的空目录。
function DeleteEmpytDirs([string]$dir){ get-childitem $dir -recurse -directory -erroraction silentlycontinue | foreach-object {if( $size = (GetDirSize $_.fullname) -gt 0 ) { DeleteEmpytDirs $_.fullname}else {remove-item -path $_.fullname -recurse -force -erroraction silentlycontinue} }}
PS:发现一个好玩的东西
$sapi = new-object -com sapi.spvoice$sapi.speak(“hello world”)
可以让系统发声。个人觉得调试一下可以读中文。。。
0 0
- powershell复制目录结构和删除空目录
- QT复制文件夹、删除非空目录
- PHP删除目录、复制目录和移动目录
- 删除空目录和空文件
- 删除非空目录
- 删除Linux空目录
- 删除空目录
- Git删除空目录
- 递归删除空目录
- 删除空目录
- 目录树的复制和删除
- 文件夹(目录)的复制和删除
- dos只复制文件结构和目录
- php 删除空目录及空子目录
- java删除目录,必须目录为空
- EVC删除非空目录
- 删除多级非空目录
- EVC删除非空目录
- MIT Introduction to Algorithms Record-8
- 物流营销服务
- 重定向NSLog
- 函数柯里化
- "二叉树"-实现数据结构算法,完全解析,通俗易懂的图文及代码讲解
- powershell复制目录结构和删除空目录
- 第四部分 linux led驱动代码分析
- Ignoring InnerClasses attribute for an anonymous inner class
- 回溯法解决批处理作业调度问题
- 【bzoj4569】【SCOI2016】【萌萌哒】【st表+并查集】
- 1052. 卖个萌 (20)
- 多维数组(Multi-dimensional Array)
- 我们缺的不是技术,而是解决问题的能力
- CocosPosd安装,错误