RoboCopy 开关排除顶层文件夹

RoboCopy 开关排除顶层文件夹

我有一个 .bat 文件,用于将包含压缩文件的文件夹从一台计算机复制到 NAS。一旦它们进入 NAS,我就会解压并删除 .rar/.zip 等。我不想将压缩文件保留在 NAS 上,因为它会占用两倍多的空间,但我需要将它们保留在原始计算机上。我的问题是,当我运行批处理文件时,它会重新复制所有内容。我如何防止重新复制已存在的目录,同时复制新目录及其中的文件?

所以我想要跳过已经存在的顶层目录,无论内容是什么。

答案1

我假设您使用的是老式的 Windows 批处理脚本,因为您使用的是 robocopy。这可能是学习一些 PowerShell 的好机会。但是,本着真正回答问题的精神……:)

您可以尝试在 robocopy 之前使用 FOR 循环,例如:

SET SOURCE_DIR=C:\Wherever\the\directories\are
SET TARGET_DIR=\\nas\wherever\the\directories\are\going

FOR /D %%d IN ("%SOURCE_DIR%\*") DO (
  IF NOT EXIST "%TARGET_DIR%\%%~nxd" (
    ECHO Copying "%%~d%" ...
    REM robocopy command for copying directory [ "%%~nxd" ] goes here
  )
)

相关内容