1

我尝试过 Fastcopy 和 Robocopy,两者似乎都可以执行其中任何一项操作,但不能同时执行。

对于(复制前)之类的文件

D:\SYMLINKSOURCE\file1 <<symlink from D:\Source\file1 **edit
D:\SYMLINKSOURCE\file2 <<symlink from D:\Source\file1 **edit

D:\DESTINATIONxx\file2 <<not a symlink

我想复制D:\SYMLINKSOURCE\*D:\DESTINATIONxx但不覆盖D:\DESTINATIONxx\file1,这样复制后它看起来像

(AFTER COPYING)
D:\SYMLINKSOURCE\file1 <<symlink from D:\Source\file1
D:\SYMLINKSOURCE\file2 <<symlink from D:\Source\file2

D:\DESTINATIONxx\file1 <<symlink from D:\Source\file1
D:\DESTINATIONxx\file2 <<not a symlink

我试过这个不覆盖,但它不保留符号链接,而是复制解析的文件复制文件而不覆盖

robocopy "D:\SYMLINKSOURCE" "D:\DESTINATION" /E /XC /XN /XO

(AFTER COPYING)
D:\SYMLINKSOURCE\file1 <<symlink from D:\Source\file1
D:\SYMLINKSOURCE\file2 <<symlink from D:\Source\file2

D:\DESTINATIONxx\file1 <<not a symlink < i wanted this as symlink
D:\DESTINATIONxx\file2 <<not a symlink

并添加 /SL 以保留符号链接会覆盖所有内容。

robocopy "D:\SYMLINKSOURCE" "D:\DESTINATION" /E /XC /XN /XO /SL

(AFTER COPYING)
D:\SYMLINKSOURCE\file1 <<symlink from D:\Source\file1
D:\SYMLINKSOURCE\file2 <<symlink from D:\Source\file2

D:\DESTINATIONxx\file1 <<symlink from D:\Source\file1
D:\DESTINATIONxx\file2 <<symlink from D:\Source\file1 < i did not want this overwritten

有什么办法可以实现我想要的吗?

4

1 回答 1

1

我能看到的唯一方法是使用两个单独的 robocopy,第一个用于非链接文件,然后用于要复制为链接的链接文件。假设普通文件多于链接,您可以运行:

robocopy "D:\SYMLINKSOURCE" "D:\DESTINATION" /E /XC /XN /XO

然后通过单独命名(或使用一些命名约定,例如sl-file1和 usasl*模式)复制实际链接,从而修复错误覆盖的链接:

robocopy "D:\SYMLINKSOURCE\file1" "D:\DESTINATION" /E /XC /XN /XO /SL  
于 2012-10-12T09:17:02.273 回答