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

PowerShell脚本问题:将今日修改子文件夹的TXT文件移至根目录

PowerShell脚本修正方案

原脚本问题点

  • 误用Copy-Item,需求是移动文件,应该用Move-Item
  • 未过滤.txt文件,会遍历所有文件和文件夹
  • $Today计算逻辑错误,无法精准匹配今日修改的文件
  • 缺少同名文件检查及终止逻辑
  • Copy-Item参数错误,应指定-Destination而非-Path

修正后的脚本

# 定义源路径和目标路径
$SrcPath = "H:\FOLDERS\"
$DestPath = "H:\FOLDERS"

# 获取今日零点和明日零点,精准匹配今日修改的文件
$todayStart = (Get-Date).Date
$todayEnd = $todayStart.AddDays(1)

# 递归查找子文件夹中今日修改的.txt文件(仅选文件)
$targetFiles = Get-ChildItem -Recurse -Path $SrcPath -File -Filter "*.txt" | 
               Where-Object { $_.LastWriteTime -ge $todayStart -and $_.LastWriteTime -lt $todayEnd }

# 检查目标目录是否有同名文件,存在则终止
foreach ($file in $targetFiles) {
    $destFilePath = Join-Path -Path $DestPath -ChildPath $file.Name
    if (Test-Path -Path $destFilePath) {
        Write-Error "目标目录已存在同名文件:$($file.Name),终止移动操作"
        exit 1
    }
}

# 执行移动操作
if ($targetFiles.Count -gt 0) {
    $targetFiles | Move-Item -Destination $DestPath -Verbose
} else {
    Write-Host "未找到符合条件的.txt文件"
}

关键说明

  • 用(Get-Date).Date获取今日零点,结合明日零点的时间范围,确保只筛选今日修改的文件
  • -File和-Filter "*.txt"精准定位目标文件类型,避免误处理文件夹或其他格式文件
  • 先遍历检查所有待移动文件的目标路径,只要有一个同名文件就终止脚本,避免部分移动后报错
  • -Verbose参数会显示每一步的移动详情,方便排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:32:18