如何在深度为1的情况下复制所有以特定字符串开头的文件夹?

3

我是在Jenkins构建中运行xcopy。

我有以下目录结构:

Ensure\
  a
    Web_ERP
  b
  c
    Web_ERP
  Web_ERP
  Web_ERP_Claims
  Web_ERP_Finance

我正在尝试将Ensure文件夹下以"Web_ER*"开头的所有文件夹(深度为1)复制到我的当前工作区。
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*文件夹。
我只想复制Ensure文件夹下的Web_ER*文件夹及其内容。
我已经尝试使用xcopy命令的以下开关:/i /e /s /m,但每次都得到相同的结果。
编辑#1:
@magoo当我运行您给出的命令时,它会复制所有Web_ER*文件夹下的所有文件,而不包括文件夹本身。我想要复制以“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中相应的命令。

我做错了什么?


C:\ Program Files(x86)\ Jenkins \ workspace \ Ensure-Publish> cd .. \ EnsureC:\ Program Files(x86)\ Jenkins \ workspace \ 确保> xcopy Web_ER *“ C:\ Program Files(x86)\ Jenkins \ workspace \ Ensure-Publish” 已复制0个文件 - undefined
2个回答

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

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

不确定OP是否也希望将Web_ER*文件夹一并复制,但如果是的话,您需要在复制目标中包含它们(并添加选项/i)... - undefined

0
我最终使用了以下的PowerShell命令:
Get-childitem | where {$_.name -like "Web_ER*"} | copy-item -recurse -destination ..\Ensure-Publish -force

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接