如何在一个循环中将选择的文件移动到几个不同的目录中?

时间:2019-04-23 11:53:48

标签: powershell

第一次使用Powershell认真玩弄。我遇到了一个问题,就是我的小循环无法完成我想要的操作;它会从目录中找到的文件中创建一系列名称的列表,并创建保存文件所需的目录。

[TAG]Series first.txt
[TAG]Series something else.txt
File.jpg
etc.

这应该分类为

Series first [Sometag]\[TAG]Series first.txt
Series something else [Sometag]\[TAG]Series something else.txt
File.jpg
etc.

但是我无法获得Move-Item来将文件实际移动到新目录中。它会导致无扩展名的文件或错误,指出文件(目录)已存在。

$details = ' [Sometag]'
$series = Get-ChildItem . -Name -File -Filter *.txt |
          % {$_.Replace("[TAG]", "").Split("-")[0].Trim()} |
          Get-Unique 
$series | ForEach-Object {
    New-Item -ErrorAction Ignore -Name $_$details -ItemType Directory
}

此命令应将使用$serie集合找到的文件移动到先前创建的目录中。

foreach ($serie in $series) {
    Get-ChildItem -File -Filter *$serie*.txt |
        Move-Item -Destination '.\$serie$details'
}

这导致它抱怨文件已存在。最好的解决方法是什么,我可以优化前两行吗?

0 个答案:

没有答案