如何使用xcopy从文本文件复制文件和文件夹结构?

时间:2013-01-22 11:50:14

标签: batch-file xcopy

我有一个包含文件和文件夹列表的文本文件。我想要做的是使用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"
)

我是在正确的轨道上吗?

谢谢你,最诚挚的问候,

安德鲁

1 个答案:

答案 0 :(得分: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”,则%%~pA = Folder \ 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\*"确保仅在条目不是目录时才复制该条目。 See Reference for more Techniques and Comments

在命令行键入for /?以查看变量修饰符列表。 %%~A将从变量中删除周围的引号(如果有)。

Post about xcopy prompting issue.fix #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"
)