2013-02-22 44 views
3

我想从子目录中复制一个文件类型,将副本放入一个文件夹中,重命名它们以免它们被覆盖。重命名它但保留文件扩展名。我不在乎它被重命名为什么,只要每个副本都有一个唯一的名称,这样它们就不会被覆盖。将子目录中的文件类型复制到一个文件夹中重命名文件,以免覆盖

这是我现在的代码。它做的一切,我想,除了它覆盖同名文件:

代码:

set dSource=C:\Users\P Ditty\Documents\SH3\data\cfg\Careers 
set dTarget=C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR 
set fType=*.clg 
for /f "delims=" %%f in ('dir /a-d /b /s "%dSource%\%fType%"') do (
copy /v "%%f" "%dTarget%\" 2>nul 
) 

谢谢。

+0

重命名为究竟是什么?如果你有一个文件C:\ Users \ P Ditty \ Documents \ SH3 \ data \ cfg \ Careers \ myfile.clg,你希望它看起来像你的目的地? – ty733420 2013-02-22 21:44:25

+0

任何东西。只要它保持文件扩展名。所以数字甚至按日期。只要他们不覆盖。所以每个文件都是唯一的。 – machiavelli 2013-02-22 21:45:34

回答

1

为了避免通过保留原有的目录结构中的重复问题:

set dSource=C:\Users\P Ditty\Documents\SH3\data\cfg\Careers 
set dTarget=C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR 
set fType=*.clg 

xcopy/s/i "%dSource%\%fType%" "%dTarget%" 
+0

所以如果创建日期是相同的,那么他们会覆盖?那么可以使它数值化吗? – machiavelli 2013-02-22 22:13:24

+0

你可以选择一个随机数,并祈祷它不在那里,但我会建议坚持日期,只是使用更多的精度。从长远来看使它更容易。我已经更新了我的答案,包括精确到一分钟...只要你不运行它每分钟超过一次,你会没事的:) – ty733420 2013-02-22 22:18:43

+0

他们正在复制的文件不是相同的文件在相同的子目录中随时间变化。它们是具有相同文件名的不同子目录中的不同文件。所以按分钟仍然覆盖。 – machiavelli 2013-02-22 22:23:19

相关问题