將一個文件列表複製到另一個文件列表

將一個文件列表複製到另一個文件列表

我有一個從 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

根據大衛·魯曼的回答,以下內容有效。它使用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 指令列表

相關內容