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

如何根据CSV记录的路径批量移动文件,可通过bat脚本实现吗?

完全可以实现,下面给两种常用的实现方案,你可以根据自己的情况选择:

方案1:BAT批处理实现

前提条件

确保你的CSV文件保存为ANSI编码(避免中文路径乱码),将CSV文件命名为file_list.csv,和编写的BAT文件放在同一文件夹下。

代码示例

@echo off
:: 切换编码为UTF-8,也可以删掉这行用系统默认编码
chcp 65001 >nul
:: 跳过CSV第一行表头,按逗号分隔读取两列内容
for /f "skip=1 tokens=1,2 delims=," %%a in (file_list.csv) do (
    :: 自动创建目标路径的上级目录,不存在就新建
    if not exist "%%~dpb" md "%%~dpb"
    :: 执行移动操作,/y参数无需确认直接覆盖同名文件
    move /y "%%~a" "%%~b"
)
echo 全部文件移动完成
pause

如果你的文件路径里本身包含逗号,该方案适配性较差,建议使用下面的PowerShell方案。

方案2:PowerShell实现(更稳定,推荐新手使用)

PowerShell原生支持CSV解析,对特殊字符、中文路径的兼容性更好。

使用方法

新建文本文档,将下方代码粘贴进去后,保存为后缀为.ps1的文件,和你的CSV文件放在同一目录下,右键选择「使用PowerShell运行」即可。

代码示例

# 读取CSV文件,自动识别表头对应的字段
$fileList = Import-Csv -Path "file_list.csv" -Encoding UTF8
foreach ($item in $fileList) {
    # 提取目标文件的上级目录,不存在则自动创建
    $destDir = Split-Path -Path $item.'Dest Path' -Parent
    if (-not (Test-Path $destDir)) {
        New-Item -ItemType Directory -Path $destDir -Force | Out-Null
    }
    # 执行移动操作,-Force参数自动覆盖同名文件
    Move-Item -Path $item.'Source Path' -Destination $item.'Dest Path' -Force
}
Write-Host "批量移动操作已执行完毕"
Read-Host "按回车键退出程序"

注意事项

  • 两种方案执行前都建议先备份原始文件,或者先在CSV里保留2-3条测试数据跑一遍,确认路径、移动逻辑符合预期后再跑全量1500条记录
  • 如果不需要覆盖目标路径下的同名文件,删掉BAT代码里的/y参数、PowerShell代码里的-Force参数即可
  • 如果你的CSV文件名不是file_list.csv,把代码里的文件名替换成你实际的文件名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:54:04