Robocopy - 仅当路径有效且目录不存在时才复制

Robocopy - 仅当路径有效且目录不存在时才复制

我有一个 robocopy 进程,但如果输入有误,我不希望它毁掉其他人的内容。该进程将目录从源复制到远程目标,但我只希望它在远程目标不存在时才这样做。我该如何设置?

答案1

借助 PowerShell 的帮助,您可以轻松检查目录是否已存在测试路径 cmdlet

param(
    [string]$InputPath,
    [string]$OutputPath,
    [string]$rc_parameter
)

if((Test-Path -Path $OutputPath -PathType Container) -eq $true){
    Write-Out "Output-Path already exists - aborting!"
    Exit
}else{
    Start-Process robocopy -ArgumentList "`"$InputPath`" `"$OutputPath`" $rc_parameter" -NoNewWindow -Wait
    Write-Out "If Robocopy did not throw any errors, everything went fine!"
}

只需将其保存为myrobocopyscript.ps1,然后启动 PowerShell 控制台并输入:

# Syntax:
.\myrobocopyscript.ps1 -InputPath "<YOUR_INPUT-PATH>" -OutputPath "<YOUR_OUTPUT-PATH>" -rc_parameter "/<YOUR_PARAMETERS>"

# Example:
.\myrobocopyscript.ps1 -InputPath "D:\Downloads" -OutputPath "E:\NewFolder" -rc_parameter "/MIR /R:5 /W:15"`)

当然,您也可以使用Test-Path$InputPath只需添加另一个if(Test-Path)条件即可。


另一个(完全手动的)选项是将现有操作分为三个步骤:

  1. 使用Robocopy 的/L-Switch。这将仅列出 Robocopy 将执行的所有操作 - 而无需实际执行这些操作。(您可以编写一个/LOG:-File,以便使用文本编辑器在步骤 2 中使用Ctrl+ F
  2. 检查输出中的EXTRA文件,如果没有显示,
  3. 您可以在没有 的情况下运行 Robocopy /L

然而,我认为这不会很有用,因为当需要处理几十个文件时很容易遗漏信息。

相关内容