请求排查PowerShell脚本:无法导出近7天修改/创建文件的绝对路径列表
解决PowerShell获取近7天修改/创建文件的问题
原脚本存在逻辑冗余、引号转义错误以及筛选条件不完整的问题,以下是修正后的解决方案:
直接在PowerShell环境运行的脚本
$days = 7 $targetPath = "H:\Molding\Molding Parameters" $outputPath = "C:\MoldPara\Bhavesh.csv" # 递归遍历目标目录,筛选近7天内修改或创建的文件 Get-ChildItem -Path $targetPath -Recurse -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-$days) -or $_.CreationTime -gt (Get-Date).AddDays(-$days) } | Select-Object FullName, LastWriteTime, CreationTime | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8
-File参数直接限定只获取文件,无需额外筛选容器对象- 同时判断文件的修改时间和创建时间,满足任一条件即纳入结果
- 显式指定UTF8编码,避免CSV文件出现乱码
- 变量化配置项,后续修改路径或天数更便捷
适用于CMD窗口的调用命令
如果需要从CMD直接触发执行,需正确处理引号转义,使用单引号包裹路径避免冲突:
@PowerShell -NoProfile -Command "$days=7; $targetPath='H:\Molding\Molding Parameters'; $outputPath='C:\MoldPara\Bhavesh.csv'; Get-ChildItem -Path $targetPath -Recurse -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-$days) -or $_.CreationTime -gt (Get-Date).AddDays(-$days) } | Select-Object FullName, LastWriteTime, CreationTime | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8" Pause
-NoProfile参数跳过加载用户配置文件,提升执行效率- 整合所有逻辑为单条命令,避免CMD中字符串拆分导致的语法错误
内容的提问来源于stack exchange,提问作者Bhavesh Sudani
相关产品推荐
相关产品推荐

