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

如何用PowerShell仅复制更新或较新文件?现有脚本优化求助

复制新文件与已修改文件到目标文件夹的PowerShell脚本优化

你的现有脚本仅判断文件是否存在,要实现复制新文件和已修改文件的需求,只需在判断逻辑中加入文件修改时间对比和文件大小校验(可选但更严谨),以下是优化后的脚本:

基础版本(仅处理当前文件夹)

$SourceFolder = "C:\Users\parveen.kumar\Downloads\Source"
$DestFolder = "C:\Users\parveen.kumar\Downloads\desi"

# 获取源文件夹下的所有文件(不含子文件夹)
$sourceFiles = Get-ChildItem -Path $SourceFolder -File

foreach ($file in $sourceFiles) {
    $destFilePath = Join-Path -Path $DestFolder -ChildPath $file.Name
    
    # 判断逻辑:文件不存在 / 源文件更新 / 文件大小不同
    if (-not (Test-Path -Path $destFilePath) -or 
        ($file.LastWriteTime -gt (Get-Item $destFilePath).LastWriteTime) -or
        ($file.Length -ne (Get-Item $destFilePath).Length)) {
        
        Copy-Item -Path $file.FullName -Destination $destFilePath -Force
        Write-Host "已同步文件: $($file.Name)"
    }
}

关键优化点

  • 路径拼接:用Join-Path替代手动拼接字符串,避免路径格式错误
  • 三重判断:
    1. 目标文件不存在:直接复制新文件
    2. 源文件修改时间晚于目标文件:说明源文件已更新,需要覆盖
    3. 文件大小不一致:避免修改时间未变更但内容已修改的极端情况
  • 强制覆盖:-Force参数确保只读文件也能被更新
  • 操作日志:Write-Host输出处理记录,方便验证结果

扩展版本(处理子文件夹并保留目录结构)

如果需要同步源文件夹的子目录结构,可使用以下脚本:

$SourceFolder = "C:\Users\parveen.kumar\Downloads\Source"
$DestFolder = "C:\Users\parveen.kumar\Downloads\desi"

# 获取源文件夹下所有文件(包含子文件夹)
$sourceFiles = Get-ChildItem -Path $SourceFolder -File -Recurse

foreach ($file in $sourceFiles) {
    # 计算文件相对于源文件夹的路径,用于保留目录结构
    $relativePath = $file.FullName.Substring($SourceFolder.Length + 1)
    $destFilePath = Join-Path -Path $DestFolder -ChildPath $relativePath
    
    # 自动创建目标文件夹的父目录
    $destParentDir = Split-Path -Path $destFilePath -Parent
    if (-not (Test-Path -Path $destParentDir)) {
        New-Item -Path $destParentDir -ItemType Directory | Out-Null
    }
    
    # 同步判断逻辑
    if (-not (Test-Path -Path $destFilePath) -or 
        ($file.LastWriteTime -gt (Get-Item $destFilePath).LastWriteTime) -or
        ($file.Length -ne (Get-Item $destFilePath).Length)) {
        
        Copy-Item -Path $file.FullName -Destination $destFilePath -Force
        Write-Host "已同步文件: $relativePath"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:30:54