Автоматическое определение файла вместо использования планировщика заданий - PullRequest
1 голос
/ 04 июня 2019

У меня есть этот код, который берет файл из: d2ve38282 и локально помещает его в: D: \ Test \ MEP \ TST \ input \ tEST.

1-я попытка:

Move-Item "\\d2ve38282\AS2\Inbound\Test Orders\*.txt" -Destination "D:\Test\MEP\TST\input\tEST"

2-я попытка:

$FTBM = 'D:\Test Folder'
$FLTR = '*.*'

$watcher = New-Object IO.FileSystemWatcher $FTBM, $FLTR -Property @{
    IncludeSubDirectories = $false;
    NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}

Move-Item "D:\Test Folder\*.txt" -Destination "D:\Test Folder 2"

Register-ObjectEvent $watcher Created -SourceIdentifier FileCreated -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
}
#Unregister-Event FileCreated

3-я попытка:

$FTBM = 'D:\Test Folder'
$FLTR = '*.*'

$watcher = New-Object IO.FileSystemWatcher $FTBM, $FLTR -Property @{
    IncludeSubDirectories = $false;
    NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}

Register-ObjectEvent $watcher Created -SourceIdentifier FileCreated -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    Move-Item "D:\Test Folder\*.txt" -Destination "D:\Test Folder 2"
}"
#Unregister-Event FileCreated

Как настроить автоматический запуск при обнаружении тестового заказа в этой папке: D: \ Test Folder \?

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете использовать что-то вроде этого:

$folder = 'c:\scripts\test' # Enter the root path you want to monitor.
$filter = '*.*'  # You can enter a wildcard filter here.

# In the following line, you can change 'IncludeSubdirectories to $true if required.                          
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

# Here, all three events are registerd.  You need only subscribe to events that you need:

Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}

Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore red
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}

Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore white
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}

Источник: FileSystemWatcher

Версия Dot Net всегда лучше, чем версия WMI. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...