Я пытаюсь переместить файлы из одной папки в другую, и ниже приведен код PowerShell, который я придумал:
$folder = 'C:\test'
$filter = '*.*' # <-- set this according to your requirements
$destination = 'C:\Folder1'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true # <-- set this according to your requirements
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp"
#$UNI_PRINT = Select-String -Path C:\Test\*.Print_Job -Pattern "SATO"\\
$file = Get-Content -Path $folder
$containsWord = $file | %{$_ -match "SATO"}
if ($containsWord -contains $true)
{
Write-Host Contains String
Move-Item $path -Destination $destination -Force -Verbose # Force will overwrite files with same name
}
else
{
Write-Host Not Contains String
}
}
Папка C: \ test постоянно получает от 5 до 6 файлов с расширением .Print_Job.
Итак, я написал событие Filecreated, чтобы я мог постоянно отслеживать папку, чтобы проверить, был ли файл создан или нет.
Внутри этого я хочу прочитать содержимое каждого полученного файла, прежде чем перемещать его на основе следующих критериев.
- Если содержимое файла содержит Motorola, этот файл должен быть перемещен в папку1
- Если содержимое файла содержит SATO, этот файл должен быть перемещен в папку 2.
- Если в Файловом содержимом содержится Zebra, этот файл должен быть перемещен в Папку 3.
Как я могу сделать это в Poweshell.
Ждем ваших решений.
Заранее спасибо.