我有一个包含文件和文件夹列表的文本文件。我想要做的是使用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"
)
我是在正确的轨道上吗?
谢谢你,最诚挚的问候,
安德鲁
答案 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"
)