You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell筛选并复制指定Excel文件的技术求助

PowerShell批量筛选复制Excel文件并记录信息

完整实现脚本

直接给你能落地的脚本,方便修改参数和重复执行:

# 配置核心参数
$networkPath = "\\你的网络共享路径"
$localTargetPath = "C:\本地存储文件夹"
$outputLogPath = "C:\文件记录.txt"

# 自动创建本地目标文件夹(不存在的话)
if (-not (Test-Path $localTargetPath)) {
    New-Item -ItemType Directory -Path $localTargetPath | Out-Null
}

# 筛选文件、复制并记录信息
Get-ChildItem -Path $networkPath -Recurse -File -Include "*.xls", "*.xlsx", "*.xlsm" |
    Where-Object {
        # 过滤最后修改时间(2022年4月1日之后)
        $_.LastWriteTime -gt (Get-Date "2022-04-01") -and
        # 过滤文件名包含"2022"
        $_.Name -like "*2022*"
    } |
    ForEach-Object {
        # 复制文件到本地,-Force可覆盖同名文件(不需要就删掉)
        Copy-Item -Path $_.FullName -Destination $localTargetPath -Force
        # 整理要记录的信息
        "$($_.FullName),$($_.Name),$($_.LastWriteTime)"
    } |
    Out-File -Path $outputLogPath -Encoding utf8

你的疑问逐一解答

  1. 如何及在何处过滤LastWriteTime
    把时间过滤条件写在Where-Object代码块里:$_.LastWriteTime -gt (Get-Date "2022-04-01")。Get-Date会把字符串转成标准时间对象,和文件自带的LastWriteTime属性做对比,只保留修改时间晚于2022年4月1日的文件。

  2. 如何及在何处过滤文件名中的“2022”
    同样在Where-Object块里添加通配符匹配:$_.Name -like "*2022*"。*代表任意长度的任意字符,这个条件会匹配文件名里任何位置包含“2022”的文件。

  3. 如何及在何处将文件复制到本地文件夹
    在ForEach-Object代码块里执行Copy-Item命令:用$_.FullName拿到文件的完整网络路径,指定本地文件夹作为Destination。如果需要覆盖本地已有的同名文件,就加-Force参数,不需要可以直接删掉。

  4. 是否需要创建脚本文件运行该流程
    必须建议写脚本(后缀.ps1)运行,原因很实在:

  • 处理20000个文件的流程需要稳定重复执行,脚本能避免每次命令行输入出错;
  • 网络路径、本地存储位置这类参数改起来方便;
  • 后续要调整筛选规则,直接改脚本就行,不用重新拼一大串命令。

运行脚本的方式:右键用PowerShell打开脚本,或者在PowerShell窗口里输入.\你的脚本文件名.ps1(注意当前路径要和脚本所在目录一致)。


内容的提问来源于stack exchange,提问作者blimbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:10:42