如果子文件夹存在并且包含早于特定日期的文件,则配置文件删除文件夹
Profile delete folder if a subfolder exists and contains files older than a certain date
我已经四处寻找,但还没有找到一些可以将我推向正确方向的脚本,该脚本将执行以下操作:
-enumerate over a folder of profiles
-check a one level down to see if a certain subfolder exists
-if it exist
-check last modified date
-if older than jan 1, 2015, delete files AND the folder
-write the user's profile name and files deleted to a log file
-if not older than jan 1, 2015, do not delete
-write the user's profile name to a log file
文件结构如下所示
-profiles
-name1
-folder1
-folder2
fileOlderThanXDate.old
-name2
-folder1
-folder2
fileNewerthanXdate.new
-name3
-folder1
因此,在配置文件中,向下搜索名称 1,然后搜索文件夹 1 [每个人都会有],如果有文件夹 2,请检查其中文件的 lastModifiedDate,如果旧,则删除文件和文件夹 2,然后将 name1 和那些文件写入日志。
继续name2,好像是folder1里面的folder2,但是文件比较新,那就把name2写到不同的日志里就行了。
继续name2,文件夹1中没有文件夹2,继续
我找到了所有提示和碎片来文件夹文件夹并删除,找到超过 x 天的文件,删除,但我无法将拼图拼凑在一起。这是一个问题,但感谢任何方向的推动......否则,我将需要大量的点击和删除。
您需要的是一个简单的 ForEach 循环和 Test-Path cmdlet(假设是 PSv3 或更高版本)。我还使用 Split-Path 来输出日志。
Switch(Get-ChildItem C:\Users -Directory|Select -Expand FullName){
{!(Test-Path $_\Folder1\Folder2)}{Continue}
{Test-Path $_\Folder1\Folder2\* -OlderThan "10/01/2014 12:00 AM"}{Split-Path $_ -Leaf|Out-File Old.txt -Append;Remove-Item $_\Folder1\Folder2 -Recurse -Force;continue}
default {Split-Path $_ -leaf | Out-File NotOld.txt -Append}
}
编辑: 我在第二个切换条件的路径末尾添加了 \*
,所以它会查看 Folder2 中的文件,而不是查看修改日期的 Folder2。现在它会查看文件夹中是否有任何文件是旧的,如果它们是旧的,则删除整个文件夹并将名称输出到 Old.txt 日志文件。
我已经四处寻找,但还没有找到一些可以将我推向正确方向的脚本,该脚本将执行以下操作:
-enumerate over a folder of profiles
-check a one level down to see if a certain subfolder exists
-if it exist
-check last modified date
-if older than jan 1, 2015, delete files AND the folder
-write the user's profile name and files deleted to a log file
-if not older than jan 1, 2015, do not delete
-write the user's profile name to a log file
文件结构如下所示
-profiles
-name1
-folder1
-folder2
fileOlderThanXDate.old
-name2
-folder1
-folder2
fileNewerthanXdate.new
-name3
-folder1
因此,在配置文件中,向下搜索名称 1,然后搜索文件夹 1 [每个人都会有],如果有文件夹 2,请检查其中文件的 lastModifiedDate,如果旧,则删除文件和文件夹 2,然后将 name1 和那些文件写入日志。 继续name2,好像是folder1里面的folder2,但是文件比较新,那就把name2写到不同的日志里就行了。 继续name2,文件夹1中没有文件夹2,继续
我找到了所有提示和碎片来文件夹文件夹并删除,找到超过 x 天的文件,删除,但我无法将拼图拼凑在一起。这是一个问题,但感谢任何方向的推动......否则,我将需要大量的点击和删除。
您需要的是一个简单的 ForEach 循环和 Test-Path cmdlet(假设是 PSv3 或更高版本)。我还使用 Split-Path 来输出日志。
Switch(Get-ChildItem C:\Users -Directory|Select -Expand FullName){
{!(Test-Path $_\Folder1\Folder2)}{Continue}
{Test-Path $_\Folder1\Folder2\* -OlderThan "10/01/2014 12:00 AM"}{Split-Path $_ -Leaf|Out-File Old.txt -Append;Remove-Item $_\Folder1\Folder2 -Recurse -Force;continue}
default {Split-Path $_ -leaf | Out-File NotOld.txt -Append}
}
编辑: 我在第二个切换条件的路径末尾添加了 \*
,所以它会查看 Folder2 中的文件,而不是查看修改日期的 Folder2。现在它会查看文件夹中是否有任何文件是旧的,如果它们是旧的,则删除整个文件夹并将名称输出到 Old.txt 日志文件。