我很想知道是什么让Robocopy(强大的文件复制)变得如此快速和强大.任何机构都知道什么是用于Robocopy的API/Algo?有人研究过Robocopy吗?
我问,因为我必须编写一个方法(在.NET/C#中),它将快速复制目录/文件而没有错误...数据量可以达到15Gb,我不能简单地调用Robocopy出于各种原因.
谢谢!
这是我的脚本移动文件超过一定天数 -
mkdir F:\TempRemoval
robocopy "F:\Example" "F:\TempRemoval" /move /e /minage:1
del "F:\TempRemoval\*.*" /f /s /q
rmdir F:\TempRemoval /s /q
exit
Run Code Online (Sandbox Code Playgroud)
我唯一的问题是我需要的某些文件被添加到这个3-4岁的文件夹中.我知道一个可行的解决方案,但我不知道如何编码.
我希望robocopy只搜索日期到第一级文件夹,即
c:\folders\delete
Run Code Online (Sandbox Code Playgroud)
我希望它只搜索"文件夹"中列出的文件和文件夹的日期 - 并根据该结果移动整个文件夹和子文件夹/文件.
反正有没有这样做?
有没有办法利用Robocopy,如果它是针对一个空的顶级目录调用它不会复制它?
我正在使用Robocopy来识别然后在脚本中压缩的文件和目录 - 使用标准Windows归档功能无法压缩空目录.
我知道/ s开关可以防止复制空子目录.
在此先感谢您的帮助。
我用来ROBOCOPY
将一些文件从一个驱动器复制到同一台计算机上的另一个驱动器。每隔一段时间,我就会收到一个错误。它没有按应有的方式重试 999 次,而是重试一次并失败。我有几个问题:
为什么这个错误首先会发生?
为什么没有ROBOCOPY
按照定义重试 999 次?
命令如下:
mkdir C:\Users\tempuser\AppData\Local\temp\test1
robocopy /R:999 /W:5 /NP /E /XO /NFL /NDL E:\test1 C:\Users\tempuser\AppData\Local\temp\test1 test*
Run Code Online (Sandbox Code Playgroud)
-------------------------------------------------- ---------------------------- ROBOCOPY :: 适用于 Windows 的强大文件复制 -------------------------------------------------- ---------------------------- 开始时间 : 2013 年 3 月 25 日星期一 4:20:51 AM 来源:E:\test1 目标:C:\Users\tempuser\AppData\Local\temp\test1 文件:测试* 选项:/NDL /NFL /S /E /DCOPY:DA /COPY:DAT /NP /XO /R:999 /W:5 -------------------------------------------------- ---------------------------- 2013/03/25 04:20:51 错误 32 (0x00000020) 访问目标目录 C:\Users\tempuser\AppData\Local\temp\test1 该进程无法访问该文件,因为该文件正在被另一个进程使用。 等待 5 秒...重试... -------------------------------------------------- ---------------------------- 已跳过的复制总数 不匹配 失败 附加内容 目录:1 0 0 …
我正在开发一个脚本,需要根据用户输入动态传递RoboCopy开关,因此使用array
似乎是最好的选择.但是我在使用时看到以下问题我指定/XF
了具有空格和值的参数.
这按预期工作:
RoboCopy C:\Dir1 C:\Dir2 /NP /NFL /NS /NDL /NJH /NJS /XF *.config
Run Code Online (Sandbox Code Playgroud)
这按预期工作:
$Switches = @("/NP", "/NFL", "/NS", "/NDL", "/NJH", "/NJS", "/E")
RoboCopy C:\Dir1 C:\Dir2 $Switches
Run Code Online (Sandbox Code Playgroud)
抛出ERROR : Invalid Parameter #10 : "/XF *.config"
:
$Switches = @("/NP", "/NFL", "/NS", "/NDL", "/NJH", "/NJS", "/E", "/XF *.config")
RoboCopy C:\Dir1 C:\Dir2 $Switches
Run Code Online (Sandbox Code Playgroud)
我尝试了一些事情,比如使用/XF
参数引用但没有成功.任何提示/帮助表示赞赏.
我正在寻找一种在PowerShell中获取和设置文件属性(隐藏和只读)的方法,用于组合路径和文件名超过260个字符的文件.我知道.NET类不支持更长的文件路径; 我已经尝试过了.Attrib也不起作用.我收到错误"参数格式不正确 - ".同样,Dir也不起作用.
我正在使用Robocopy来获取文件名.Robocopy对长路径没有任何问题.但是,我不能使用Robocopy获取/设置属性,因为我只使用Robocopy的/ L列表模式.
任何人都有PowerShell的变通方法?
更新:
subst
不支持超长路径.它似乎确实适用于部分路径.
mklink
需要本地卷.
net use
不支持超长路径.它似乎确实适用于部分路径.
New-PSDrive
不支持超长路径,甚至不支持部分路径.
这是我的批量内容
Robocopy.exe D:\IDRIVE\New backups\Program\full\1 D:\IDRIVE\New backups\Program\full\2
pause
Run Code Online (Sandbox Code Playgroud)
但在cmd它正在显示
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Mon Apr 21 15:24:47 2014
Source - D:\IDRIVE\New\
Dest - D:\IDRIVE\New backups\Program\full\backups\Program\full\2\
Files :
Options : /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #3 : "D:\IDRIVE\New"
Simple Usage :: ROBOCOPY source destination /MIR
source :: Source Directory (drive:\path or \\server\share\path).
destination :: Destination Dir (drive:\path or \\server\share\path).
/MIR :: Mirror a complete directory tree.
For more usage information run ROBOCOPY …
Run Code Online (Sandbox Code Playgroud) 当我使用robocopy复制文件并使用选项/IS
进行覆盖(如果目标位置已经存在)。如日志所示,它将选项视为另一个文件:ERROR : Invalid Parameter #4 : "C:/Program Files/Git/IS"
任何人都知道在覆盖目标文件时如何在Windows中复制文件。
$ robocopy "Z:\ubuntushare" "C:\Natlink\Natlink\MacroSystem" "_git.py" /IS
ROBOCOPY :: Robust File Copy for Windows
Started : Sat Sep 17 18:00:05 2016
Source - Z:\ubuntushare\
Dest - C:\Natlink\Natlink\MacroSystem\
Files : _git.py
Options : /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #4 : "C:/Program Files/Git/IS"
Simple Usage :: ROBOCOPY source destination /MIR
source :: Source Directory (drive:\path or \\server\share\path).
destination :: Destination Dir (drive:\path or \\server\share\path).
/MIR :: Mirror a …
Run Code Online (Sandbox Code Playgroud) 即使复制文件成功,我的msbuild脚本也会失败。如果robocopy命令exitcode <8,则表示文件已复制。那么,如果退出代码<8,我该如何对msbuild脚本IgnoreExitCode说呢?我将IgnoreExitCode设置为true,但是如果它是真正的错误怎么办?
<Exec Command="robocopy $(SourceDir) $(DestinationDir) /mir /mt /xd $(ExcludeDir)" IgnoreExitCode="true" />
Run Code Online (Sandbox Code Playgroud) 我想使用ROBOCOPY来备份文件夹.为了解这一点,我创建了一个测试源文件夹,其中包含其他子文件夹和虚拟文件.
F:\RoboCopy\RoboCopy_Files
Run Code Online (Sandbox Code Playgroud)
我能够从命令行和PowerShell(使用Windows 10)ROBOCOPY源文件夹.
ROBOCOPY "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR
Run Code Online (Sandbox Code Playgroud)
它完全符合我的要求.
现在我将命令放入批处理文件中Robocopy.cmd
.
但是,当我将相同的命令放入Robocopy.cmd文件时,在根F:\ RoboCopy文件夹中运行它,我只得到闪烁的cmd窗口,我的命令在越来越多的行上重复.
如何将命令放入CMD文件(例如Robocopy.cmd)以供以后使用/共享/计划?如何在不运行命令的情况下防止命令提示符在无限循环中闪烁?
注意:我觉得这更像是学习如何将cmd脚本放入文件,而不是如何使用ROBOCOPY.