遍历PowerShell中的文件
问题描述:
我想遍历一组文件夹并将它们复制到PowerShell中的不同位置。所有的文件夹遵循以下命名约定:遍历PowerShell中的文件
20160621
这显然是写在yyyymmdd
格式的一天。由于所有的文件夹遵循这个惯例,我的问题是我将如何说:复制上周的所有文件夹“?我想过使用(get-date).AddDays(-7)
,但我不确定如何识别文件夹名称作为日期对象而不是字符串。
答
只需使用Get-ChildItem cmdlet来检索文件,并使用Where-Object cmdlet的筛选。
下面的脚本结合了三种Where
条件
- 获取所有目录
- 确保目录名称包含正好六位数字。
- 解析六位数一个
DateTime
对象,并确保早些时候然后七天前:
脚本:
Get-ChildItem 'your_source' | Where-Object {
$_.PsIsContainer -and
$_.BaseName -match '\d{6}' -and
([DateTime]::ParseExact($_.BaseName, 'yyyyMMdd', $null) -gt (Get-Date).AddDays(-7))
} | Copy-Item -Destination 'Your_destination'
完美的作品!好吧,有几种情况,目标中存在具有相同日期的文件夹。我会如何说“如果存在合并内容”? –
尝试Copy-Item cmdlet –
会合并内容吗? –