我编写了一个 Powershell 脚本,用于删除子目录中超过 25 天的文件。
#
# Variables.
#
$days = 25
$src = "C:\Users\ArifSohM\Desktop\TestFolder\"
# Check if files are older than 25 days.
Get-childitem -path $src |
ForEach-Object {
$age = New-Timespan ($_.LastWriteTime) $(get-date)
if($age.days -gt $days) {
Remove-Item $_.FullName -force
Write-host "$_ is older than 25 days and has been deleted." -ForegroundColor yellow
}
}
#
这部分工作正常,但当我运行此命令时,它还会删除根目录中的文件。这是我的文件夹结构:
- 测试文件夹(根目录)
- 目录1(文件夹)
- 文件1
- 文件2
- 目录2(文件夹)
- 文件1
- 文件2
- 文件1
- 文件2
- 目录1(文件夹)
因此,我想删除Directory1
&中的所有内容Directory2
,但不删除 中的所有Test Folder
内容。可以这样做吗?
答案1
Get-ChildItem -Directory
这可以通过使用仅选择目录并循环浏览它们来实现(除其他方法外) 。
请注意,your/my 函数不会处理子文件夹中的子文件夹。这只是对原始脚本的简单调整。
$days = 25
$src = "C:\Users\ArifSohM\Desktop\TestFolder\"
# Check if files are older than 25 days.
$dirs = Get-childitem -path $src* -Directory
foreach ($dir in $dirs) {
Get-childitem -path $dir | ForEach-Object {
$age = New-Timespan ($_.LastWriteTime) $(get-date)
if($age.days -gt $days) {
Remove-Item $_.FullName -force
Write-host "$_ is older than 25 days and has been deleted." -ForegroundColor yellow
}
}
}