Power Shell для перемещения определенных файлов - PullRequest
0 голосов
/ 22 января 2019

введите описание изображения здесь У меня есть список с идентификаторами пользователей в текстовом файле и папка, которая содержит множество файлов и папок с идентификаторами пользователя в имени файла.Я пытаюсь создать сценарий, который будет искать идентификатор каждого пользователя из файла TXT, найти файл, содержащий идентификаторы пользователя в папке со всеми файлами, и переместить соответствующие в папку EXPORTED, названную по полной папке или имени файла, который имеетбыл найден в. Имена файлов содержат имя, фамилию и идентификатор пользователя

Я попробовал это ниже, но это только перемещает папку только с точным идентификатором пользователя из текстового файла ... Это не перемещаетфайлы / папки, содержащие идентификатор пользователя в списке файлов

$aryfiles = Get-Content "e:\new\text.txt" 
$sourcedir = "e:\new\" 
$destinationDir = "e:\new\new" 
$sourceFiles = Get-ChildItem -Path $sourceDir -Recurse -Include $aryfiles | Select-Object -ExpandProperty FullName 
foreach ($sourceFile in $SourceFiles) { 
    Move-Item $sourcefile -Destination $destinationDir 
} 

1 Ответ

0 голосов
/ 22 января 2019

В фильтре, который вы используете для Get-ChildItem, нет символа подстановки. Создайте новый список с подстановочными знаками и используйте этот список для Get-ChildItem:

$NewAryFiles = $aryfiles  | foreach {"*$_*"}
$sourceFiles = Get-ChildItem -Path $sourceDir -Recurse -Include $NewAryFiles | Select-Object -ExpandProperty FullName

Для создания папки с именем ИД пользователя используйте New-Item. New-Item создает вывод, который вы можете перехватить, чтобы использовать новую сгенерированную папку.

$aryfiles  | foreach {
    $SourceFile  = Get-ChildItem -Path $sourceDir -Recurse -filter "*$_*"
    $NewFolder = New-Item -ItemType "directory" -Path $destinationDir -Name $_
    foreach ($File in $SourceFile) {
        Move-Item -Path $($File.FullName) -Destination $NewFolder
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...