如何使用同一行代码将文件多次复制到文件夹?
我这里有这样的代码:
$TodayDate = Get-Date -Format "dd-MM-yyyy"
$TodayDateSecs = Get-Date -Format "dd-MM-yyyy I hh-mm-ss"
$Sheet01 = "C:\Users\MyUser\Desktop\Sheets"
$Sheet01exists = get-ChildItem $Sheet01 -recurse | where {$_.name -match "Modelo 01 - $TodayDate"} | select name
$Project01 = "C:\Users\MyUser\Desktop\Project 01\Model 01.txt"
$WatchFolder = "C:\Users\MyUser\Desktop\Watch Folder\$ClientName"
$OldSheets = "C:\Users\MyUser\Desktop\Project 01\Old Sheets"
$MoveSheetAfterRender = get-ChildItem $Sheet01 -recurse | where {$_.name -match "Modelo 01 - $TodayDate"} | Move-Item -Destination $OldSheets
If ($Sheet01exists) {
Copy-Item -Path $Project01 -Destination "$WatchFolder\Model 01 - $TodayDateSecs.txt"
$MoveSheetAfterRender
Write-Host "Copiado para Renderização"
}
Else {
Write-Host "Arquivo não encontrado"
}
我的意图是:每次$Sheet01exists
返回匹配时,我希望将$Project01
中指定的文件复制到$WatchFolder
中的文件夹。
问题是,如果有多个文件对应于$Sheet01exists
,则$Project01
中的文件将只复制一次。
我需要的是将$Project01
中的文件复制到$WatchFolder
中,以匹配$Sheet01exists
中的每个匹配项。也就是说,需要复制并重命名它,以免被覆盖。
我怎样才能做到尽可能干净?
1条答案
按热度按时间bis0qfac1#
这里有一种方法可以直接将它连接到
Foreach-Object
循环:因为你只是把相同的文件从它们的位置移到
$OldSheets
上,你可以在循环中通过传递对象路径来完成。至于要复制的文件,因为-Destination
接受一个脚本块,你可以创建一个你自己的字符串,递增$i
,然后把它附加到路径的末尾,给你[01]..[10]+
的效果。-WhatIf
安全/通用参数。*