Jenkins 管道脚本将文件复制或移动到另一个目的地
Jenkins pipeline script to copy or move file to another destination
我正在准备 Groovy 语言的 Jenkins 管道脚本。我想将所有文件和文件夹移动到另一个位置。由于 Groovy 支持 Java 所以我使用下面的 java 代码来执行操作。
管道{
代理任何
stages{
stage('Organise Files'){
steps{
script{
File sourceFolder = new File("C:\My-Source");
File destinationFolder = new File("C:\My-Destination");
File[] listOfFiles = sourceFolder.listFiles();
echo "Files Total: " + listOfFiles.length;
for (File file : listOfFiles) {
if (file.isFile()) {
echo file.getName()
Files.copy(Paths.get(file.path), Paths.get("C:\My-Destination"));
}
}
}
}
}
}
}
此代码抛出以下异常:
groovy.lang.MissingPropertyException: No such property: Files for
class: WorkflowScript
我也试过下面的代码,但它也不起作用。
FileUtils.copyFile(file.path, "C:\My-Destination");
最后,我尝试使用 java I/O Stream 来执行操作,代码如下:
def srcStream = new File("C:\My-Source\**\*").newDataInputStream()
def dstStream = new File("C:\My-Destination").newDataOutputStream()
dstStream << srcStream
srcStream.close()
dstStream.close()
但它也不起作用并抛出以下异常:
java.io.FileNotFoundException: C:\My-Source (Access is denied)
任何人都可以建议我如何解决这个问题,也请告诉我如何在复制或移动文件后从源位置删除文件?还有一件事,在复制过程中我可以使用通配符过滤一些文件夹和文件吗?也请告诉我。
不要使用普通 Java/Groovy 执行这些 I/O 函数。即使你得到这个 运行,它也总是在 master 而不是构建代理上执行。为此也使用 pipeline steps,例如:
bat("xcopy C:\My-Source C:\My-Destination /O /X /E /H /K")
fileOperations([fileCopyOperation(
excludes: '',
flattenFiles: false,
includes: 'C:\My-Source\**',
targetLocation: "C:\My-Destination"
)]).
我假设在我的示例中我没有找到 Windows 路径的非常正确的语法,但我希望你明白我的意思。
我正在准备 Groovy 语言的 Jenkins 管道脚本。我想将所有文件和文件夹移动到另一个位置。由于 Groovy 支持 Java 所以我使用下面的 java 代码来执行操作。
管道{ 代理任何
stages{
stage('Organise Files'){
steps{
script{
File sourceFolder = new File("C:\My-Source");
File destinationFolder = new File("C:\My-Destination");
File[] listOfFiles = sourceFolder.listFiles();
echo "Files Total: " + listOfFiles.length;
for (File file : listOfFiles) {
if (file.isFile()) {
echo file.getName()
Files.copy(Paths.get(file.path), Paths.get("C:\My-Destination"));
}
}
}
}
}
}
}
此代码抛出以下异常:
groovy.lang.MissingPropertyException: No such property: Files for class: WorkflowScript
我也试过下面的代码,但它也不起作用。
FileUtils.copyFile(file.path, "C:\My-Destination");
最后,我尝试使用 java I/O Stream 来执行操作,代码如下:
def srcStream = new File("C:\My-Source\**\*").newDataInputStream()
def dstStream = new File("C:\My-Destination").newDataOutputStream()
dstStream << srcStream
srcStream.close()
dstStream.close()
但它也不起作用并抛出以下异常:
java.io.FileNotFoundException: C:\My-Source (Access is denied)
任何人都可以建议我如何解决这个问题,也请告诉我如何在复制或移动文件后从源位置删除文件?还有一件事,在复制过程中我可以使用通配符过滤一些文件夹和文件吗?也请告诉我。
不要使用普通 Java/Groovy 执行这些 I/O 函数。即使你得到这个 运行,它也总是在 master 而不是构建代理上执行。为此也使用 pipeline steps,例如:
bat("xcopy C:\My-Source C:\My-Destination /O /X /E /H /K")
fileOperations([fileCopyOperation(
excludes: '',
flattenFiles: false,
includes: 'C:\My-Source\**',
targetLocation: "C:\My-Destination"
)]).
我假设在我的示例中我没有找到 Windows 路径的非常正确的语法,但我希望你明白我的意思。