Kopieren einer Dateiliste in eine andere

Kopieren einer Dateiliste in eine andere

Ich habe eine Liste von Dateien, die aus einer Tabelle in einer SQL-Datenbank extrahiert wurden. Die Datei kann entweder eine durch Trennzeichen getrennte Textdatei oder eine Excel-Tabelle sein, je nachdem, was am besten funktioniert.

Die Datei sieht so aus

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

usw

Eine Spalte enthält den ursprünglichen Pfad und Dateinamen der Dateien, die zweite Spalte enthält den gewünschten Pfad und Dateinamen der Dateien. Dies wurde mithilfe einer Standardfunktion REPLACE() in der ursprünglichen SELECT-Anweisung erreicht.

Jetzt habe ich die Liste(n), die ich tatsächlich brauche, um die Quelldatei zum Ziel zu kopieren.

Ist dies über die Befehlszeile (Batch oder Powershell?) oder per Skripting oder einer GUI erreichbar?

Antwort1

Hier ist eine native Windows-Batch-Lösung zum Parsen einer Textdatei mit durch Kommas getrennten Werten (CSV).

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

Antwort2

Basierend auf der Antwort von David Ruhmann funktioniert Folgendes. Es verwendet xcopyund übergibt eine Fan die Eingabeaufforderung, die fragt, ob es sich bei der Datei um eine Datei oder einen Ordner handelt.

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

BEARBEITEN: Tilde (~) gemäß Vorschlag von @DavidRuhmann hinzugefügt.

Antwort3

Dies ist mit einer Unix-Shell recht einfach. Hier ist, wie Sie es mit meinem tun könnenHamilton C-Schale. (DerFreie Versionwird dies tun.) Sie könnten etwas sehr Ähnliches tun mitCygwin bash.

Der wirklich einfache Weg, dies zu tun, wäre, die Liste zu transformieren mitsedin ein Skript, in dem jede Zeile eine cpOperation ist. Führen Sie dann einfach das Skript aus.

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

So copyscript.cshwürde diese Datei aussehen:

Verwenden von sed zum Konvertieren einer CSV-Liste in eine Liste von CP-Befehlen

verwandte Informationen