【问题标题】:How to xcopy all folders starting with string in depth 1?如何xcopy所有以深度1的字符串开头的文件夹?
【发布时间】:2017-05-07 14:44:00
【问题描述】:

我在 Jenkins 构建中运行 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* 文件夹一起被复制。

我只希望将位于 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 ..\Ensure C:\Program Files (x86)\Jenkins\workspace\Ensure>xcopy Web_ER* "C :\Program Files (x86)\Jenkins\workspace\Ensure-Publish" 0 个文件已复制

标签: batch-file jenkins xcopy


【解决方案1】:
for /f "delims=" %%a in ('dir /b /ad web_er*') do xcopy ".\%%a\*" "%WORKSPACE%" /e

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

【讨论】:

  • 不确定 OP 是否也希望复制 Web_ER* 文件夹,但如果是这样,您需要将它们包含在复制目标中(然后添加选项 /i) ...
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多