Как переместить не временные файлы в выделенные подкаталоги? - PullRequest
0 голосов
/ 08 мая 2019

Мне нужна помощь в создании скрипта, который проходит через каждый файл в корне текущего каталога, сравнивая их filename.ext с черным списком масок для исключения (*.! Qb, * .parts и т. Д.). Несовпадающие файлы отправляются в соответствующие каталоги с использованием синтаксиса filename\filename.ext

Мой старый пакетный код не готов для PowerShell, но может дать некоторую ясность.

for %%s in (*.*) do if not "%%~xs"==".!qB" if not "%%~xs"==".parts" (
md "%%~ns" & move "%%s" "%%~ns\")

Пожалуйста, помогите мне понять команды, необходимые для их замены.

1 Ответ

1 голос
/ 08 мая 2019

Слегка измененная команда из комментария.

gci * -file | ? Extension -notin '.!qb','.parts' | % {md $_.BaseName ;move $_.FullName -Destination ("{0}\" -f $_.BaseName) -force}

Более подробный вариант:

Get-ChildItem * -File | 
  Where-Object Extension -notin '.!qb','.parts' | ForEach-Object {
    New-Item  $_.BaseName -ItemType Directory | Out-Null
    Move-Item -LiteralPath $_.FullName -Destination ("{0}\" -f $_.BaseName) -force
  }

образец дерева после запуска сценария:

> tree /f
A:.
│   filename.!qb
│   filename.parts
│
└───filename
        filename.mkv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...