如何在PowerShell中将文件复制到多个文件夹

mklgxw1f  于 2022-12-13  发布在  Shell
关注(0)|答案(6)|浏览(271)

我正在运行一个脚本,其中包含多个环境,可以从弹出的窗口中选择这些环境。我遇到的唯一问题是,当我想设置脚本从我创建的源函数复制并将其一次性放入多个位置时。
下面是我需要帮助的代码部分。

$Source = Select-Boss

$destination = 'D:\parts','D:\labor','D:\time','D:\money'

"Calling Copy-Item with parameters source: '$source', destination: '$destination'."

Copy-Item -Path $source -Destination $destination

下面的部分介绍了如何在脚本中设置其余的复制功能,以便您更好地了解主要部分的副本。

$Source = Select-Boss

$destination = 'D:\parts'

"Calling Copy-Item with parameters source: '$source', destination: '$destination'."

Copy-Item -Path $source -Destination $destination

但是对于一个特定的部分,我需要把它复制到多个位置。我需要这样做,因为我不必改变我登录的服务器,然后转到另一个不同的服务器。这一切都是在一个位置完成的,我希望让事情变得更容易,而不是写一大堆小代码去复制和保存在文件夹中。

vcudknz3

vcudknz31#

copy-item-destination参数只接受一个值,因此需要某种类型的循环。
假设您希望在多个文件夹中使用相同的文件名:

$destFolders | Foreach-Object { Copy-Item -Path $Source -dest (Join-Path $_ $destFileName) }

应该这样做。

ecr0jaav

ecr0jaav2#

我想你想要的是这样的东西:

$Source = Select-Boss

$destination = @("D:\parts","D:\labor","D:\time","D:\money")

# Calling Copy-Item with parameters source: '$source', destination: '$destination'."

foreach ($dir in $destination)
{
    Copy-Item -Path $source -Destination $dir
}

这段代码创建一个文件夹数组,然后遍历每个文件夹,将文件复制到其中。

h9vpoimq

h9vpoimq3#

https://www.petri.com/use-powershell-to-copy-files-to-multiple-locations

dir c:\work\*.txt | copy-item -Destination $destA -PassThru | copy -dest $destB -PassThru
ttcibm8c

ttcibm8c4#

这是我用过的最好最简单的解决方案。
在我的情况下,它是一个网络位置,但它也可以用于本地系统。
"\\foo\foo"位置包含10个按用户名排列的文件夹。#使用双斜杠(在StackOverflow中未显示)

dir "\\foo\foo\*" | foreach-object { copy-item -path d:\foo -destination $_ } -verbose

您必须对网络共享和目标文件夹具有写入权限。

ws51t4hk

ws51t4hk5#

# Copy one or more files to another directory and subdirectories

$destinationFrom = "W:\_server_folder_files\basic"
$typeOfFiles = "php.ini", "index.html"
$filesToCopy = get-childitem -Path $destinationFrom -Name -include $typeOfFiles -Recurse
$PathTo = "W:\test\"
$destinationPath =  Get-ChildItem -path $PathTo -Name -Exclude "*.*" -recurse -force

foreach ($file_item in $filesToCopy)
{
    #Remove-Item -Path (Join-Path -Path $PathTo -ChildPath $file_item)
    Copy-Item -Path (Join-Path -Path $destinationFrom -ChildPath $file_item) -Destination $PathTo
    # Write-Verbose (Join-Path -Path $destinationFrom -ChildPath $file_item) -verbose

    ForEach($folder in $destinationPath)
    {
        #Remove-Item -Path (Join-Path -Path (Join-Path -Path $PathTo -ChildPath $folder) -ChildPath $file_item)
        #Copy-Item -Path (Join-Path -Path $destinationFrom -ChildPath $file_item) -Destination (Join-Path -Path $PathTo -ChildPath $folder)
        # Write-Verbose (Join-Path -Path $PathTo -ChildPath $folder) -verbose
    }
}
vd2z7a6w

vd2z7a6w6#

'$filesToCopy =获取内容C:\用户\lukhm\桌面\Files.txt $destinationPath =获取内容C:\用户\lukhm\桌面\文件夹. txt-强制ForEach($目标路径中的$文件夹){ #删除项目路径(连接路径路径(连接路径到子路径$文件夹)-子路径$文件项)复制项目路径$文件项-目标$文件夹#写入详细(连接路径到子路径$文件夹)-详细} }

Copy-Item : The filename, directory name, or volume label syntax is incorrect.
At line:18 char:9
+         Copy-Item -Path $file_item -Destination $folder
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Comman 
   ds.CopyItemCommand`

我已经提到了文件路径与文件名,文件夹路径与文件夹名在.txt文件.我如何得到代码使用它们来复制提到的文件到提到的文件夹?

相关问题