2

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

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

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

так далее

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

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

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

3 ответа3

2

Вот собственное пакетное решение Windows для анализа текстового файла с разделителями-запятыми (csv).

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

Основываясь на ответе Дэвида Румана, следующие работы. Он использует xcopy и передает F на приглашение, которое спрашивает, является ли файл файлом или папкой.

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

РЕДАКТИРОВАТЬ: Добавлена тильда (~) в соответствии с предложением @DavidRuhmann.

0

Это довольно легко сделать с помощью оболочки Unix. Вот как вы можете сделать это с моей оболочкой Hamilton C. (Бесплатная версия сделает это.) Вы можете сделать что-то очень похожее с Cygwin bash .

Действительно простой способ сделать это - преобразовать список с помощью sed в скрипт, где каждая строка выполняет операцию cp . Тогда просто запустите скрипт.

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .