如何在批处理命令中将文件从一个目录复制到另一个目录

时间:2014-06-20 09:38:29

标签: batch-file

我希望复制扩展名为.dyn的文件,该文件位于主文件夹(T15_finished)的每个子文件夹中。我希望将其复制到其他位置的相应子文件夹中(T15)。我使用xcopy命令创建了该位置。这里,.dyn文件正在T15文件夹中的相应子文件夹中成功复制(参见下面的代码)。现在,我有一个扩展名为.dynain的文件,它与.dyn位于同一个子文件夹中。并且.dynain文件也被复制,我不想要。 请参阅我创建的以下代码。谁能告诉我什么是错的?

@echo off

xcopy D:\Master\SPRINGBACK\CPW\T15_finished  D:\Master\SPRINGBACK\FRESH_SPRINGBACK\CPW\T15 /t
xcopy /e D:\Master\SPRINGBACK\CPW\T15_finished\*.dyn D:\Master\SPRINGBACK\FRESH_SPRINGBACK\CPW\T15

pause

2 个答案:

答案 0 :(得分:2)

短文件名。如果您在包含dir /x文件的文件夹中执行.dynain,您将看到为该文件生成的8.3文件名,并且它将具有.dyn扩展名。

如果您知道冲突文件的扩展名,则可以使用robocopy/xf开关来指示要排除的文件(*.dynain),或者您可以生成排除文件与xcopy /exclude:file一起使用(请参阅xcopy /?获取解释)

或者,您可以生成要排除的文件列表

(for /f "tokens=" %%a in (
    'dir /s /b "D:\Master\SPRINGBACK\CPW\T15_finished\*.dyn" ^| findstr /v /i /e /l ".dyn"'
) do @echo(%%~nxa)>excludedFiles.txt

xcopy /exclude:excludedFiles.txt /e D:\Master\SPRINGBACK\CPW\T15_finished\*.dyn D:\Master\SPRINGBACK\FRESH_SPRINGBACK\CPW\T15

或(由foxidrive发布),复制全部然后删除不需要的文件。

答案 1 :(得分:1)

匹配短文件名以及长文件名。这就是原因。

解决方案是使用另一个命令删除文件:

del /s "D:\Master\SPRINGBACK\FRESH_SPRINGBACK\CPW\T15\*.dynain"