gpt4 book ai didi

powershell - 使用 PowerShell 将文件从工作站复制到服务器,保留目录结构

转载 作者:行者123 更新时间:2023-12-01 15:48:33 24 4
gpt4 key购买 nike

我正在尝试将我工作站上文件夹的选定内容复制到网络共享。

工作站的文件夹:

\ProjectX
DocumentA.sql
DocumentA.ad
\Build
DocumentA.csv

我想将 ProjectX 的内容复制到 \\server\shared\projects\ProjectX (ProjectX 文件夹已经已创建)。

期望的结果:

\ProjectX
DocumentA.sql
\Build
DocumentA.csv

我试过:

 $destination = '\\server\shared\projects\ProjectX'

Get-ChildItem '.\*' -Include '*.csv', '*.sql' -Recurse | Foreach {
Copy-Item -Path $_ -Destination $destination -Recurse
}

不幸的是,这会导致:

\ProjectX
DocumentA.sql
DocumentA.csv

我错过了什么?

我对涉及 robocopy 的答案不感兴趣。

最佳答案

这很痛苦,因为 Copy-Item 太笨了,无法正确完成工作。这意味着您必须自己编写逻辑。

通常我会得到这样的结果:

$Source = (Get-Location).Path;
$Destination = '\\server\shared\projects\ProjectX';

Get-ChildItem -Path $Source -Include '*.csv','*.sql' -Recurse | ForEach-Object {
# Get the destination file's full name
$FileDestination = $_.FullName.Replace($Source,$Destination);

# Get the destination file's parent folder
$FileDestinationFolder = Split-Path $FileDestination -Parent;

#Create the destination file's parent folder if it doesn't exist
if (!(Test-Path -Path $FileDestinationFolder)) {
New-Item -ItemType Directory -Path $FileDestinationFolder | Out-Null;
}

# Copy the file
Copy-Item -Path $_.FullName -Destination $FileDestination;
}

编辑:我认为当您在父目录不存在的情况下尝试创建子目录时,这会失败。我将把它留给读者作为练习。

关于powershell - 使用 PowerShell 将文件从工作站复制到服务器,保留目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com