3

ファイルとフォルダのリストを含むテキストファイルがあります。私がやりたいのは、xcopyを使用して、テキストファイルに書き込まれている内容を複製することです。私のテキストファイルは次のようになります。

"C:\FOLDER"  
"C:\FOLDER\FILE1.TXT"
"C:\FOLDER\FILE2.TXT"
"C:\FOLDER\FOLDER2"
"C:\FOLDER\FOLDER2\FILE3.TXT"

特定の出力ディレクトリについて、"C:\OUTPUT"構造全体を複製したいので、次のようにします。

"C:\OUTPUT\FOLDER"  
"C:\OUTPUT\FOLDER\FILE1.TXT"
"C:\OUTPUT\FOLDER\FILE2.TXT"
"C:\OUTPUT\FOLDER\FOLDER2"
"C:\OUTPUT\FOLDER\FOLDER2\FILE3.TXT"

どうすればこれを達成できますか?これまで、ファイルの各行を読み取るforループを作成しましたが、その行がフォルダーの場合はすべてのファイルをコピーします。私がやりたいのは、テキストファイルに記載されているファイルとフォルダをコピーして作成することだけです。

@echo off
for /f "delims=] tokens=1*" %%a in (textfile.txt) do (
   XCOPY /S /E %%a "C:\OUTPUT"
)

私は正しい方向に進んでいますか?

ありがとう、よろしくお願いします、

アンドリュー

4

1 に答える 1

5

はい、あなたは近くにいます。追加された宛先パスとして既存のパスを使用する必要があります。

アップデート

@echo off
for /f "delims=" %%A in (textfile.txt) do if exist "%%~fA\*" (
    md "C:\Output\%%~pA"
    copy /y "%%~fA" "C:\Output\%%~pnxA"
)

オリジナル

%%A= "C:\ Folder \ Folder2 \ File3.txt"の場合、= %%~pAFolder \ Folder2

@echo off
for /f "delims=" %%A in (textfile.txt) do (
    md "C:\Output\%%~pA"
    if not exist "%%~fA\*" echo f | xcopy "%%~fA" "C:\Output\%%~pnxA" /y
)

if not exist "%%~fA\*"、ディレクトリでない場合にのみエントリをコピーするようにします。その他のテクニックとコメントについては、リファレンスを参照してください

コマンドラインで入力しfor /?て、変数修飾子のリストを表示します。%%~A変数から周囲の引用符(存在する場合)を削除します。

xcopyプロンプトの問題について投稿します。#2を修正します。

代替セットアップ。ほとんどの場合、xcopy機能は必要ありません。

@echo off
for /f "delims=" %%A in (textfile.txt) do (
    md "C:\Output\%%~pA"
    if not exist "%%~fA\*" copy /y "%%~fA" "C:\Output\%%~pnxA"
)
于 2013-01-22T13:31:29.727 に答える