Windows cmd批处理中的文件副本

时间:2014-01-06 03:50:37

标签: windows batch-file cmd batch-processing

我真的找不到任何问题:

我有一个文件夹C:\ dir1 \ dir2我通过读取文件获取此目录,因此我不知道dir1或dir2的名称。我想将dir2复制到目标目录C:\ target中。最后我想要C:\ target \ dir2,目标中的dir2应该包含dir2源中的所有文件。当我使用/ s开关尝试xcopy时,它会将源dir2中的文件直接复制到目标中,而不会在目标中创建dir2。如何确保创建此目录?

我必须实现自动创建dir2。

编辑:

for /F "tokens=*" %%i in (%maindir%\mydir.txt) do call :process2 %%i
:process2
set sourcefile=%*
xcopy /s "%sourcefile%" target

基本上是我的批处理文件的一部分。在mydir.txt中我得到一些目录,如C:\ dir1 \ dir2,其中包含文件file1 file2等。目标我现在有

目标\文件file1 目标\ file2的

但我想要目标\ dir2 \ file1和目标\ dir2 \ file2

希望能让它更清晰一点。

2 个答案:

答案 0 :(得分:2)

@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir\with space"
SET "destdir=c:\destdir"
FOR /f "delims=" %%a IN ("%sourcedir%") DO (
 XCOPY /s "%sourcedir%" "%destdir%\%%~nxa\"
)
GOTO :EOF

这应该为你完成工作。我假设你已经从你的文件中设置了sourcedir - 我只是使用了一个名字中包含空格的目录。您可能希望将>nul附加到XCOPY行以取消消息。

答案 1 :(得分:0)

您的问题有点不清楚,但如果我理解正确,您应该查看mkdir命令。这将创建您的目录 - 仅当目录尚不存在时。语法是:

MKDIR [drive:]path

例如,mkdir \2014\photos\beach使当前目录(使用CD)中的目录为“2014”,子文件夹为“photos”和“beach”。

话虽如此,如果你有xcopy的正确语法,它应该为你创建新目录如果它还不存在。再看看xcopy

如果目录确实存在,那么在尝试再次删除它之前,这是一种非常“可靠”的方法:

if exist {directory} rd /s /q {directory}