Копировать один список файлов в другой

Копировать один список файлов в другой

У меня есть список файлов, извлеченных из таблицы в базе данных SQL. Файл может быть либо текстовым файлом с разделителями, либо таблицей Excel, в зависимости от того, что лучше подходит.

Файл выглядит так

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

и т. д.

Один столбец содержит исходный путь и имя файла файлов, второй столбец содержит желаемый путь и имя файла файлов. Это было получено с помощью стандартной функции REPLACE() в исходном операторе SELECT.

Теперь у меня есть список(ы), которые мне действительно нужны для копирования исходного файла в место назначения.

Можно ли это сделать с помощью командной строки (пакетной или Powershell?) или с помощью скриптов или графического интерфейса?

решение1

Ниже представлено пакетное решение Windows для анализа текстового файла со значениями, разделенными запятыми (csv).

@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. Вот как вы можете сделать это с помощью моегоКорпус Hamilton C. (бесплатная версиясделаем это.) Вы могли бы сделать что-то очень похожее сCygwin bash.

Самый простой способ сделать это — преобразовать список, используяседв скрипт, где каждая строка cpоперация. Затем просто запустите скрипт.

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

Вот как copyscript.cshбудет выглядеть этот файл:

Использование sed для преобразования списка CSV в список команд cp

Связанный контент