如何在groovy中列出虚拟(子)磁盘中的文件?

时间:2017-05-10 06:40:40

标签: grails jenkins groovy virtual-drive

我喜欢groovy。它是非常强大的脚本,我们到处使用它。最近在Jenkins服务器上我们试图获取一些驻留在虚拟驱动器上的文件,由subst命令创建。问题是,groovy似乎不支持虚拟驱动器,但我没有找到任何确认。这是真的,有没有解决方法呢?

以下是我们使用的示例代码:

import groovy.io.FileType

def list = []
//the original file path for T: is C:\Users\MyUser\workspace\MyProject\src\test\data
def dir = new File("T:" + "\\")
dir.eachFile (FileType.FILES) { file ->
  list << file
}

list.each{
  println "${it}"
}

我们得到的结果是:

  

[EnvInject] - 评估Groovy脚本内容[EnvInject] -   [错误] - 注入构建中定义的env变量时出现问题   包装器:org.jenkinsci.lib.envinject.EnvInjectException:失败   评估脚本。 java.io.FileNotFoundException:T:。见系统   登录以获取更多信息

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我自己找到了答案,但@Hugues Moreau 9输入是引导我回答的那个。

这是一个许可问题。 Jenkins在我的默认帐户下运行,但问题是由Apache(httpd.exe)引起的。 httpd.exe作为系统帐户运行,它没有访问T:。我做的是从https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx下载PSEXEC.EXE,通过这个工具,我以SYSTEM用户的身份打开了一个命令行:

PSEXEC -i -s -d CMD

之后我为SYSTEM用户创建一个子目录T :.现在,Jenkins和Apache可以访问虚拟驱动器。

正如Hugues指出的更精确的描述和问题在这里:https://stackoverflow.com/questions/182750/map-a-network-drive-to-be-used-by-a-service