Powershell脚本,用于删除以“开始”开头的文件;“pict”;,以“结束”;。dat";并且年龄超过2岁,无法工作

Powershell脚本,用于删除以“开始”开头的文件;“pict”;,以“结束”;。dat";并且年龄超过2岁,无法工作,powershell,match,Powershell,Match,我目前正在尝试编写一个脚本,删除文件夹中的所有文件,这些文件的历史超过2年,名称类似于“pictxxxx.dat”。它应该在开头搜索“pict”,在结尾搜索“.dat”。 这是我的代码: Get-ChildItem "C:\Temp" | ForEach { $lastWrite = $_.LastWriteTime $timespan = new-timespan -days 730 if (((get-date) - $lastWrite) -gt $timespan)

我目前正在尝试编写一个脚本,删除文件夹中的所有文件,这些文件的历史超过2年,名称类似于“pictxxxx.dat”。它应该在开头搜索“pict”,在结尾搜索“.dat”。 这是我的代码:

    Get-ChildItem "C:\Temp" | ForEach {
  $lastWrite = $_.LastWriteTime
  $timespan = new-timespan -days 730 
  if (((get-date) - $lastWrite) -gt $timespan) {
    if ($_.Name -Match "pict\d+(\.dat)^") {
      Remove-Item $_ -WhatIf
    }
  }
}
它只是什么都没做而已。每当我运行命令行时,它都会保持完全为空。删除WhatIf也无济于事

任何和所有输入都将不胜感激。

“pict\d+(.dat)^”应为“^pict\d+(.dat)” “pict\d+(.dat)^”应为“^pict\d+(.dat)”
只是一个提示,在第一行
If
之后添加一个临时
Write Verbose$\ Name-Verbose
并运行脚本。。。这样,您将看到它是否至少进入了第一个条件,然后您可以将您的努力对准好的方向。如果输入第一个
If
,那么至少您会知道问题出在第二个
If
语句上。如果它甚至没有通过第一个
如果
,那就是你需要首先查看的部分…@vonPryz它现在可以成功识别应该删除的文件,但是路径不正确?它们都位于c:/Temp中,但我运行脚本时的输出是“找不到路径c:\Windows\System32>WindowsPowerShell\v1.0*filename*,因为它不存在。”这不是我在前面的问题中帮助您的代码吗?你可以在评论中寻求帮助。“你为什么问一个新问题?”WasifHasan说,因为原来的问题被锁定了。但是,是的,这就是你帮助我做的。只是一个提示,在你的第一个
If
之后添加一个临时
Write Verbose$\ Name-Verbose
,然后运行你的脚本。。。这样,您将看到它是否至少进入了第一个条件,然后您可以将您的努力对准好的方向。如果输入第一个
If
,那么至少您会知道问题出在第二个
If
语句上。如果它甚至没有通过第一个
如果
,那就是你需要首先查看的部分…@vonPryz它现在可以成功识别应该删除的文件,但是路径不正确?它们都位于c:/Temp中,但我运行脚本时的输出是“找不到路径c:\Windows\System32>WindowsPowerShell\v1.0*filename*,因为它不存在。”这不是我在前面的问题中帮助您的代码吗?你可以在评论中寻求帮助。“你为什么问一个新问题?”WasifHasan说,因为原来的问题被锁定了。但是是的,这就是你帮助我的。
$files = Get-ChildItem "C:\Temp"
$comparetime = (get-date).AddDays(-730)
$matchstring = "^pict\d+(\.dat)"
foreach ($file in $files) {
    $lastWrite = $file.LastWriteTime
    $name = $file.name
    $fullname = $file.fullname
    if ($lastWrite -lt $comparetime -and $name -match $matchstring) {
        del $fullname
        Write-Host "del $fullname" -ForegroundColor Green
    }
}