如何 xcopy 深度为 1 的所有以字符串开头的文件夹?

How to xcopy all folders starting with string in depth 1?

我在 Jenkins 构建中 运行ning xcopy。

我的目录结构如下:

Ensure\
  a
    Web_ERP
  b
  c
    Web_ERP
  Web_ERP
  Web_ERP_Claims
  Web_ERP_Finance

我正在尝试将 Ensure (depth=1) 下以 "Web_ER*" 开头的所有文件夹复制到我当前的工作区。

node () {
    stage ('Setup') {
        deleteDir()
        bat '''
            IF NOT EXIST c:\deploy mkdir c:\deploy
            cd ..\Ensure
            xcopy Web_ER* "%WORKSPACE%" /e
        '''
    }
}

实际上,所有以 Web_ER* 开头的文件夹都与位于文件夹 a 和 c 下的 Web_ER* 文件夹一起被复制。

我只想 Web_ER* 位于 Ensure 下的文件夹与其内容一起被复制。

我用 xcopy 尝试了以下开关:/i /e /s /m 但我每次都得到相同的结果。

编辑#1:

@magoo 当我 运行 你给它的命令复制每个 Web_ER* 文件夹下的所有文件而没有文件夹本身时,我想复制所有文件夹 strating "Web_ER*" 及其所有子目录到我的目标文件夹。 按照您的示例,我也尝试过:

for /f "delims=" %%a in ('dir /b /ad web_er*') do xcopy ".\%%a" "%WORKSPACE%" /e /y

但是没有用。

例如,在 linux 中,它很简单:

cp -R folder/pattern* destination/dir

我正在寻找 windows 中的等效命令。

我做错了什么?

for /f "delims=" %%a in ('dir /b /ad web_er*') do xcopy ".\%%a\*" "%WORKSPACE%" /e

应该可以做到这一点。处理当前目录中匹配web_er*的目录名的/b基本(仅名称)形式/ad的目录列表,并将找到的每个名称依次应用到%%a;然后 xcopy 所有文件。

我最终使用了以下 powershell 命令:

Get-childitem | where {$_.name -like "Web_ER*"} | copy-item -recurse -destination ..\Ensure-Publish -force