创建可能部分存在的目录结构与 WinSCP 409 冲突
Creating a directory structure which may partially exist with WinSCP 409 Conflict
我正在使用 WinSCP + Powershell 将 Jenkins 的构建结果自动传输到我们的共享服务器,以便 QA 和开发团队可以轻松访问它。
需要 WinSCP,因为它只能通过 Webdav 协议传输。别担心!!
假设我需要在远程服务器上创建的目录是
MyProduct/BuildOutput/bin
现在,如果我在完全缺少文件夹结构的情况下执行以下命令,它将完美运行。
$session.CreateDirectory("MyProduct/BuildOutput/bin")
然而,如果说 "MyProduct/BuildOutput" 结构已经存在但缺少 "bin",则 WinSCP 会给出 409 冲突错误。
有没有什么方法可以创建一个已经部分存在的完整目录结构,而不必为此编写复杂的程序?
WinSCP CreateDirectory
方法不支持创建整个目录结构。只是一个目录。您将必须自己构建结构。试试这个方法:
[Array]$dir = 'hello/this/is/test/directory/structure' -split '/'
$path = [System.String]::Empty
for ($i=0; $i-lt $dir.Count; $i++){
if ($i -lt $dir.Count){$path+= $dir[$i] + '/'}
$session.CreateDirectory($path)
}
我正在使用 WinSCP + Powershell 将 Jenkins 的构建结果自动传输到我们的共享服务器,以便 QA 和开发团队可以轻松访问它。
需要 WinSCP,因为它只能通过 Webdav 协议传输。别担心!!
假设我需要在远程服务器上创建的目录是
MyProduct/BuildOutput/bin
现在,如果我在完全缺少文件夹结构的情况下执行以下命令,它将完美运行。
$session.CreateDirectory("MyProduct/BuildOutput/bin")
然而,如果说 "MyProduct/BuildOutput" 结构已经存在但缺少 "bin",则 WinSCP 会给出 409 冲突错误。
有没有什么方法可以创建一个已经部分存在的完整目录结构,而不必为此编写复杂的程序?
WinSCP CreateDirectory
方法不支持创建整个目录结构。只是一个目录。您将必须自己构建结构。试试这个方法:
[Array]$dir = 'hello/this/is/test/directory/structure' -split '/'
$path = [System.String]::Empty
for ($i=0; $i-lt $dir.Count; $i++){
if ($i -lt $dir.Count){$path+= $dir[$i] + '/'}
$session.CreateDirectory($path)
}