簡體   English   中英

如何使用Groovy腳本從給定目錄中獲取所有* .sln文件?

[英]How to get all the *.sln files from a given directory using Groovy script?

我正在編寫一個Jenkins Groovy腳本文件,以獲取給定目錄(包括子目錄)中的所有.NET項目解決方案文件( *.sln )。

首先,我嘗試獲取給定路徑中的目錄列表。 我使用下面的代碼工作正常:

File folder = new File("D:\\Data");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
    if (listOfFiles[i].isFile()) {
        println("File " + listOfFiles[i].getName());
        }
    else if (listOfFiles[i].isDirectory()) {
        println("Directory " + listOfFiles[i].getName());
        }
    }

2)當修改下面的代碼以列出給定路徑中的所有解決方案文件時,我得到了錯誤:

File folder = new File("D:\\Data");
File[] listOfFiles = folder.listFiles();
Collection files = FileUtils.listFiles(
  folder, 
  new RegexFileFilter("^(*.sln)"), 
  DirectoryFileFilter.DIRECTORY
  );

for (int i = 0; i < files.length; i++) {
    if (files[i].isFile()) {
        println("File " + files[i].getName());
        } 
    else if (files[i].isDirectory()) {
        println("Directory " + files[i].getName());
        }
    }

錯誤詳情:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: unable to resolve class RegexFileFilter 
 @ line 5, column 3.
     new RegexFileFilter("^(*.sln)"), 
     ^

任何人都可以在此幫助我,以獲取給定路徑(包括子目錄)中的所有解決方案文件

提前致謝!!

簡單的解決方案是像這樣使用FileNameFinder:

def finder = new FileNameFinder()
def files = finder.getFileNames 'D:\\Data', '**/*.sln'
print files

這應該做

import static groovy.io.FileType.*

def startDir = new File("D:\\Data")

startDir.eachFileRecurse(FILES) {
    if (it.name.endsWith('.sln')) {
        println it
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM