あるファイルリストを別のファイルリストにコピーする

あるファイルリストを別のファイルリストにコピーする

SQL データベースのテーブルから抽出されたファイルのリストがあります。ファイルは、区切りテキスト ファイルまたは Excel スプレッドシートのいずれか、どちらでもかまいません。

ファイルは次のようになります

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

1 列目にはファイルの元のパスとファイル名が含まれ、2 列目にはファイルの目的のパスとファイル名が含まれます。これは、元の 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 の回答に基づくと、次の方法が機能します。 を使用しxcopyFファイルがファイルかフォルダーかを尋ねるプロンプトに渡します。

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

編集: @DavidRuhmann の提案に従ってチルダ (~) を追加しました。

答え3

これはUnixシェルで簡単に実行できます。私のシェルで実行する方法は次のとおりです。ハミルトンCシェル(の無料版同じようなことを、シグウィン bash

本当に簡単な方法は、リストを次のように変換することです。sed各行がcp操作であるスクリプトに変換します。その後、スクリプトを実行するだけです。

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

ファイルは次のようcopyscript.cshになります。

sed を使用して CSV リストを cp コマンドのリストに変換する

関連情報