Powershell脚本,用于删除以“开始”开头的文件;“pict”;,以“结束”;。dat";并且年龄超过2岁,无法工作
我目前正在尝试编写一个脚本,删除文件夹中的所有文件,这些文件的历史超过2年,名称类似于“pictxxxx.dat”。它应该在开头搜索“pict”,在结尾搜索“.dat”。 这是我的代码: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)
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
}
}