robocopy / xd忽略目录列表

时间:2018-10-31 16:11:33

标签: powershell robocopy

我正在整理一个Powershell脚本,该脚本将源代码树同步到另一个目录。它根据robocopy /?的输出创建要忽略的目录列表:

# ----------------------------------------------------------------------------
# Source file directories
# ----------------------------------------------------------------------------
$reactjs = "C:\Users\me\Projects\prj\reactjs"

# ----------------------------------------------------------------------------
# Target directories
# ----------------------------------------------------------------------------
$synergy = "C:\Users\me\Projects\sync\reactjs"
$synReactjs = $synergy + "\prj-JS"

# ----------------------------------------------------------------------------
# Directories to be ignored
# ----------------------------------------------------------------------------
$reactIgnores = @(
  $reactjs + "\.git",
  $reactjs + "\node_modules",
  $reactjs + "\build"
)
# ----------------------------------------------------------------------------
# Copy/sync files
# ----------------------------------------------------------------------------
Robocopy /l $reactjs $synReactjs /mir /xd $reactIgnores

但是,robocopy立即会降级到.git目录中,尽管输出标头看起来像是它正确地解析了我的开关:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------

  Started : Wednesday, October 31, 2018 12:00:32 PM
   Source : C:\Users\me\Projects\prj\reactjs\
     Dest : C:\Users\me\Projects\sync\reactjs\prj-JS\

    Files : *.*

 Exc Dirs : C:\Users\me\Projects\prj\reactjs\.git C:\Users\me\Projects\prj\reactjs\node_modules C:\Users\me\Projects\prj\reactjs\build

  Options : *.* /L /S /E /DCOPY:DA /COPY:DAT /Z /R:1000000 /W:30

------------------------------------------------------------------------------

          New Dir          8    C:\Users\me\Projects\prj\reactjs\
            New File                 634        .eslintrc.json
            New File                 206        .gitignore
            New File                  55        .npmrc
            New File              521255        package-lock.json
            New File                1015        package.json
            New File                1001        package.json.react16
            New File               10391        README
            New File                1639        README.md
          New Dir          9    C:\Users\me\Projects\prj\reactjs\.git\
            New File                 135        COMMIT_EDITMSG
            New File                 319        config
            New File                  73        description
            New File                 125        FETCH_HEAD
<...>

/xd开关让我遗漏了什么?它在单个目录下正常工作。

编辑:我包括了Powershell标记,因为如果我在命令行中明确包含文件,则/xd会忽略文件列表。通过数组加载它们不起作用。这样得出的例外行(与上面相比):

 Exc Dirs : C:\Users\me\Projects\prj\reactjs\.git
            C:\Users\me\Projects\prj\reactjs\node_modules
            C:\Users\me\Projects\prj\reactjs\build

2 个答案:

答案 0 :(得分:0)

$reactIgnores = @(
  $reactjs + "\.git",
  $reactjs + "\node_modules",
  $reactjs + "\build"
)

尝试放置完整路径。

答案 1 :(得分:0)

这个数组对我有用,用单引号转义双引号。您不需要完整路径,我使用了一个 /XD $eXcludeDirectories 命令:

$eXcludeDirectories = @(
    '"Folder01"',
    '"Folder02"',
    '"Folder03"'
)

希望这会对其他人有所帮助。