Powershell管理系列(二十一)PowerShell操作之不同文件夹内文件合并

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750

需求:服务器使用几年下来,发现我们的磁盘下有多个类似的文件夹,我们想把这个文件夹合并到一个指定的文件夹,并删除其他不在使用的文件夹。

步骤1、我们打开我们的服务器, D盘下有5个各年信息资料汇总的文件夹, 里面有些文件是一样的,有些是不一样的.如下图:

步骤2、搜索出这5个文件夹的文件,并把往年的文件夹逐一和最新的"15年信息资料汇总"进行比对,如文件名不一样则将其复制到"15年信息资料汇总"。

$total11=Get-ChildItem "d:\11年信息资料汇总"  | foreach {$_.name}  #不要遍历查找,子文件夹直接复制
$total12=Get-ChildItem "d:\12年信息资料汇总"  | foreach {$_.name}  #不要遍历查找,子文件夹直接复制$total13=Get-ChildItem "d:\13年信息资料汇总"  | foreach {$_.name}  #不要遍历查找,子文件夹直接复制$total14=Get-ChildItem "d:\14年信息资料汇总"  | foreach {$_.name}  #不要遍历查找,子文件夹直接复制$total15=Get-ChildItem "d:\15年信息资料汇总"  | foreach {$_.name}  #不要遍历查找,子文件夹直接复制

Get-childItem -Recurse -path "d:\15年信息资料汇总" -Include "复制文件日志.txt" | Clear-Content
foreach($a11 in $total11)
{
if($a11 -notin $total15)  #假如11年的文件夹里面的文件在15年文件夹里面均不存在,在从11复制到15
{Copy-Item  -Path "d:\11年信息资料汇总\$a11" -Recurse -Destination d:\15年信息资料汇总
write-host "在11年信息资料汇总中找到新文件 $a11 并复制到15年信息资料汇总"
$a111="在11年信息资料汇总中找到新文件 $a11 并复制到15年信息资料汇总"
$a111| Out-File "D:\15年信息资料汇总\复制文件日志.txt" -Append -Encoding utf8  #输出到日志,方便比对
}
}

$total15=Get-ChildItem "d:\15年信息资料汇总"  | foreach {$_.name}  #因为15年文件夹已更新,所以需重新查找
foreach($a12 in $total12)
{
if($a12 -notin $total15) #假如12年的文件夹里面的文件在15年文件夹里面均不存在,在从12复制到15

{Copy-Item -Path "d:\12年信息资料汇总\$a12" -Recurse  -Destination d:\15年信息资料汇总
write-host "在12年信息资料汇总中找到新文件 $a12 并复制到15年信息资料汇总"
$a222="在12年信息资料汇总中找到新文件 $a12 并复制到15年信息资料汇总"
$a222| Out-File "D:\15年信息资料汇总\复制文件日志.txt" -Append -Encoding utf8  #输出到日志,方便比对}
}

$total15=Get-ChildItem "d:\15年信息资料汇总"  | foreach {$_.name} #因为15年文件夹已更新,所以需重新查找
foreach($a13 in $total13)
{
if($a13 -notin $total15) #假如13年的文件夹里面的文件在15年文件夹里面均不存在,在从13复制到15

{Copy-Item -Path "d:\13年信息资料汇总\$a13" -Recurse  -Destination d:\15年信息资料汇总
write-host "在13年信息资料汇总中找到新文件 $a13 并复制到15年信息资料汇总"
$a333="在13年信息资料汇总中找到新文件 $a13 并复制到15年信息资料汇总"
$a333| Out-File "D:\15年信息资料汇总\复制文件日志.txt" -Append -Encoding utf8  #输出到日志,方便比对

}
}

$total15=Get-ChildItem "d:\15年信息资料汇总"  | foreach {$_.name} #因为15年文件夹已更新,所以需重新查找
foreach($a14 in $total14)
{
if($a14 -notin $total15) #假如14年的文件夹里面的文件在15年文件夹里面均不存在,在从14复制到15

{Copy-Item -Path "d:\14年信息资料汇总\$a14" -Recurse  -Destination d:\15年信息资料汇总
write-host "在14年信息资料汇总中找到新文件 $a14 并复制到15年信息资料汇总"
$a444="在14年信息资料汇总中找到新文件 $a14 并复制到15年信息资料汇总"
$a444| Out-File "D:\15年信息资料汇总\复制文件日志.txt" -Append -Encoding utf8 #输出到日志,方便比对

}
}

步骤3、执行后最终效果如下:

时间: 2024-10-11 13:39:40

Powershell管理系列(二十一)PowerShell操作之不同文件夹内文件合并的相关文章

Powershell管理系列(十一)Exchange完全访问权限邮箱的设置

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 首先说明下一些赋予及取消完全访问权限的Powershell命令 1.向用户 administrator 授予对 ping.zhou 邮箱的完全访问权限,命令如下 Add-MailboxPermission -Identity ping.zhou -User administrator -AccessRights FullAcces

Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 项目中有时候做跨林邮箱迁移的时候,条件不成熟,比如安全考虑或者其他考虑,不能做双林信任,这样就提出了一个问题,历史邮件需要使用的话怎么办,一个简单高效的解决办法就是从源森林批量导出邮件为.pst文件,在批量导入到目的域森林,具体操作如下: 1.赋予管理账号邮件导入导出权限,命令如下: cls whoami New-Manageme

Powershell管理系列(十二)Exchange新启用的邮箱禁用OWA及Activesync的访问

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 今天在一个群里听到这样一个需求,新建一批AD账户后,对这些AD账户启用邮箱,同时要对这些邮箱设置规则,禁止访问OWA和Activesync的权限. 步骤1.批量建立AD账号参考博客Powershell管理系列(一)Active Direcrtory管理:用户管理,http://yuntcloud.blog.51cto.com/11

Powershell管理系列(十三)Exchange 2013邮箱数量统计

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 管理Exchange的话,我们首先对自己管理的邮箱数量和分布情况有所了解.打开EAC我们确实很快就可以查到有多少邮箱数量,如果邮箱比较多的话,而且有多个数据库,多个服务器呢?会不会觉得很繁琐,下面我介绍一下快速查询邮箱的Powershell. 我们一般管理Exchange的话需要用到Exchange management shel

Windows phone开发之文件夹与文件操作系列(一)文件夹与文件操作

Windows phone7中文件的存储模式是独立的,即独立存储空间(IsolatedStorage).对文件夹与文件操作,需要借助IsolatedStorageFile类. IsolatedStorageFile提供了对独立存储的空间获取,文件夹的删除.移动,文件的创建.删除等IO操作. 在Windows phone7中对文件的操作,都需要引入命名空间System.IO.IsolatedStorage和System.IO. 在System.IO.IsolatedStorage 命名空间下有以下

Python文件夹与文件的操作 ZZ

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

Python文件夹与文件的操作

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作

一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

python文件夹遍历,文件操作,获取文件修改创建时间

在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.')os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.ex