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

如何用PowerShell根据txt目录结构移动单文件夹内的所有文件

PowerShell 实现文件按指定结构迁移脚本

原有脚本问题说明

  • 错误使用 $ENV: 前缀调用不存在的系统环境变量,导致路径识别失败
  • 错误将 Structure.txt 中记录的目标路径直接作为移动操作的源路径,实际源文件存放在 Global 文件夹下
  • 多余的盘符裁剪逻辑,不符合需求中 Structure.txt 直接存储完整目标路径的设计

正确可运行脚本

# 定义基础路径,请根据实际情况修改
$globalFolder = "D:\Backup\Global"
$structureTxtPath = "D:\Backup\Global\Structure.txt"

# 读取Structure.txt内容,自动跳过空行
Get-Content -Path $structureTxtPath | Where-Object { $_ -match '\S' } | ForEach-Object {
    # 本条记录为目标完整路径
    $targetFullPath = $_
    # 提取目标文件名
    $fileName = Split-Path -Path $targetFullPath -Leaf
    # 拼接源文件完整路径
    $sourceFullPath = Join-Path -Path $globalFolder -ChildPath $fileName

    # 校验源文件是否存在
    if (-not (Test-Path -Path $sourceFullPath -PathType Leaf)) {
        Write-Warning "源文件不存在,跳过:$sourceFullPath"
        return
    }

    # 获取目标路径的父目录
    $targetParentDir = Split-Path -Path $targetFullPath -Parent
    # 父目录不存在则自动创建
    if (-not (Test-Path -Path $targetParentDir -PathType Container)) {
        New-Item -Path $targetParentDir -ItemType Directory -Force | Out-Null
        Write-Host "已创建目标目录:$targetParentDir"
    }

    # 移动文件
    Move-Item -Path $sourceFullPath -Destination $targetFullPath -Force
    Write-Host "已移动文件:$fileName -> $targetFullPath"
}

注意事项

  • 如果 Structure.txt 包含西里尔字符等非ASCII内容,请将文件保存为 UTF-8 带BOM 编码,避免读取时乱码
  • 可先将脚本中 Move-Item 行替换为 Write-Host "测试移动:$sourceFullPath -> $targetFullPath" 先跑一次确认逻辑无误后再执行实际移动操作
  • 若需保留源文件备份,可将 Move-Item 替换为 Copy-Item

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:08