Впервые серьезно играю с 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'
}
Что приводит к жалобе на то, что файл уже существует. Как лучше всего с этим справиться, и можно ли оптимизировать первые две строки?