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",则%%~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\*"条目不是目录时才复制条目。有关更多技术和评论,请参阅参考资料

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 回答