【发布时间】:2019-07-12 08:01:43
【问题描述】:
我还是 PowerShell 的新手,我正在尝试做一些我还没有看到确切答案的事情。我们有一个包含许多子文件夹的大文件夹,其中包含单独的音频文件(我们的电话系统记录并按日期将音频文件放置在文件夹中)。我想从这些文件夹中获取某些文件并将它们移动到不同的文件夹,但我想在新位置创建文件来自的父文件夹。我没有抓取文件夹中的所有文件,只有几个。例如:
我想在 C:\CopyFrom\02182019\AudioFile.wav 移动一个文件
我在 C:\CopyTo 有一个文件夹,但我希望目的地是 C:\CopyTo\02182019\AudioFile.wav
如果文件夹不存在,我希望脚本创建该文件夹,但如果存在,则将文件复制到该文件夹中。
我目前正在使用Get-ChildItem -Include 来获取我需要的文件并将其传送到我在网上找到的 foreach 循环中。这与我所需要的一样接近,但它复制了整个文件夹结构,从根目录开始,所以我的目的地最终是:
C:\CopyTo\CopyFrom\02182019\AudioFile.wav
这是我目前所拥有的:
Get-ChildItem $SourceFolder -Include $ExtArray -Recurse | forEach {
## Remove the original root folder
$split = $_.Fullname -split '\\'
$DestFile = $split[1..($split.Length - 1)] -join '\'
## Build the new destination file path
$DestFile = "C:\DestinationFolder\$DestFile"
## Copy-Item won't create the folder structure so we have to
## create a blank file and then overwrite it
$null = New-Item -Path $DestFile -Type File -Force
Copy-Item -Path $_.FullName -Destination $DestFile -Force
}
我在this article 中找到了foreach 循环。我假设我可以在 $split 行中添加更多内容,这将允许我削减目录结构的其余部分,但我对此仍然很陌生,并且对语法理解得不够好。
我知道这解释起来有点复杂,所以如果需要任何澄清,请告诉我。
【问题讨论】:
标签: powershell