将一个文件列表复制到另一个文件列表

将一个文件列表复制到另一个文件列表

我有从 SQL 数据库中的表中提取的文件列表。该文件可以是分隔文本文件或 Excel 电子表格,以最适合的为准。

该文件如下所示

sourcePath1\fileName1, destPath1\fileName1
sourcePath2\fileName2, destPath2\fileName2
sourcePath3\fileName3, destPath3\fileName3

ETC

一列包含文件的原始路径和文件名,第二列包含文件的所需路径和文件名。这是使用原始 SELECT 语句中的标准 REPLACE() 函数获得的。

现在我有了实际需要将源文件复制到目标的列表。

是否可以使用命令行(批处理或 Powershell?)或通过脚本或 GUI 来实现?

答案1

这是用于解析逗号分隔值(csv)文本文件的本机 Windows 批处理解决方案。

@echo off
for /f "tokens=1,2 delims=," %%A in (file.csv) do (
    copy %%A %%B
)

答案2

根据 David Ruhmann 的回答,以下方法有效。它使用xcopy并传递一个F提示,询问该文件是文件还是文件夹。

@echo off
for /f "tokens=1,2 delims=," %%A in (book1.csv) do (
    cmd /c echo F | xcopy "%%~A" "%%~B"
)

编辑:根据@DavidRuhmann 的建议添加波浪号 (~)。

答案3

使用 Unix shell 很容易做到这一点。以下是使用我的汉密尔顿C壳。 (这免费版本会这样做。)你可以做类似的事情赛格威 bash

真正简单的方法是使用sed将其转换为一个脚本,每行一个cp操作。然后只需运行该脚本即可。

sed "s/^^/cp '/;s/, /' '/;s/^$/'/" < list.csv > copyscript.csh
copyscript

该文件的内容如下copyscript.csh

使用 sed 将 CSV 列表转换为 cp 命令列表

相关内容