如何在PowerShell批量删除指定文件时记录每个文件的删除日期与时间?
实现带删除时间的文件删除脚本
当然可以轻松实现这个需求!你的原脚本直接通过管道批量删除文件,-Verbose只能显示基础操作信息,但不会包含具体的删除时间。我们只需要调整脚本逻辑,逐个处理文件并主动记录当前时间即可。
这里提供两种实用的修改方案:
方案1:控制台输出带时间的删除记录
这个方案会在每个文件删除后,清晰显示文件路径和对应的删除时间,直观易懂:
$targetFolder = "D:\" $fileList = "C:\DeleteList.txt" # 先获取所有需要删除的文件列表 $filesToDelete = Get-ChildItem -Path "$targetFolder\*" -Recurse -Include @(Get-Content $fileList) # 逐个处理文件 foreach ($file in $filesToDelete) { # 获取当前格式化的日期时间(格式可根据需求自定义) $deleteTimestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss.fff" # 执行删除操作 Remove-Item -Path $file.FullName -Verbose # 输出带时间的删除确认信息 Write-Host "✅ 文件 [$($file.FullName)] 已在 $deleteTimestamp 成功删除" -ForegroundColor Green }
方案2:将时间整合到Verbose日志中
如果你更倾向于用Verbose日志统一管理操作信息,可以把时间嵌入到Verbose消息里:
$targetFolder = "D:\" $fileList = "C:\DeleteList.txt" Get-ChildItem -Path "$targetFolder\*" -Recurse -Include @(Get-Content $fileList) | ForEach-Object { $deleteTimestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # 先输出带时间的准备删除提示 Write-Verbose "[$deleteTimestamp] 开始删除文件: $($_.FullName)" -Verbose # 执行删除 Remove-Item -Path $_.FullName -Verbose }
额外技巧:保存日志到文件
如果需要长期保留删除记录,可以把输出重定向到日志文件。比如修改方案1的最后一行:
Write-Output "文件 [$($file.FullName)] 已在 $deleteTimestamp 成功删除" >> "C:\FileDeleteLog.txt"
这样每次运行脚本,删除记录都会追加到指定的日志文件中,方便后续追溯。
内容的提问来源于stack exchange,提问作者simonc




