Проблема установки пути для файловой системы - PullRequest
0 голосов
/ 22 мая 2019

У меня есть код, который использует файловую систему для отслеживания папки в пути.

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

У меня есть графический интерфейс, который работает следующим образом для запуска файла .bat на основе заполнения этих двух полей.(Мне действительно нужен один и тот же графический интерфейс для запуска обоих одновременно, так как первый открывает файл и сохраняет что-то в папку, которую нужно отслеживать).

Кажется, я не могу получитьfilesystemwatcher для запуска одним и тем же кликом.

Я перепробовал все возможные способы объединить эти два для совместной работы, но без радости.Но поскольку я новичок в любом виде кодирования, я не знаю, что я делаю неправильно.

Это код наблюдателя файловой системы, который должен запускать файл .bat при обнаружении файла в папке.Папка 1 и папка 2 должны иметь возможность изменения в зависимости от ввода в графическом интерфейсе.

$folder = 'c:\Work\Folder1\Folder2\Destination' 
$filter = '*.*'

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

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:\temp\log\Filelog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"
Set-Location "c:\Work\Folder1\Folder2\Destination"
Start-Process "c:\Work\Folder1\Folder2\Destination\PS_Run.bat"
}   

Ниже показано, как работает существующий код (Run.bat) из графического интерфейса пользователя

$TextBox.multiline = $false
$TextBox.location = New-Object System.Drawing.Point(50,50)
$TextBox.size = New-Object System.Drawing.Size(400,50)
$TextBox.Font = 'Microsoft Sans Serif,10'



$TextBox2 = New-Object system.Windows.Forms.TextBox
$TextBox2.multiline = $false
$TextBox2.location = New-Object System.Drawing.Point(50,110)
$TextBox2.size = New-Object System.Drawing.Size(400,50)
$TextBox2.Font = 'Microsoft Sans Serif,10'

\Folder1\Folder2\
$($TextBox.text)\$($TextBox2.text)

$TextBox до $($TextBox.text) работает в одной ситуации, но не в другой, и мне нужно, чтобы они работали вместе.

Я получаю ошибку

New-Object : Exception calling ".ctor" with "2" argument(s): "The directory name O:\EU_CGI_Resources\IMS\Automation_Tes
ting\Scripting\MaxScript\Texture_change_1\$($TextBox.text)\$($TextBox2.text)\Production\3D_Files\export is invalid."
At O:\EU_CGI_Resources\IMS\Automation_Testing\Scripting\Sctips_WIP\Watch_Path_Test.ps1:14 char:8
+ $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{I ...
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Register-ObjectEvent : Cannot bind argument to parameter 'InputObject' because it is null.
At O:\EU_CGI_Resources\IMS\Automation_Testing\Scripting\Sctips_WIP\Watch_Path_Test.ps1:16 char:22
+ Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Acti ...
+                      ~~~~
    + CategoryInfo          : InvalidData: (:) [Register-ObjectEvent], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RegisterObj
   ectEventCommand

Register-ObjectEvent : Cannot bind argument to parameter 'InputObject' because it is null.
At O:\EU_CGI_Resources\IMS\Automation_Testing\Scripting\Sctips_WIP\Watch_Path_Test.ps1:26 char:22
+ Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Acti ...
+                      ~~~~
    + CategoryInfo          : InvalidData: (:) [Register-ObjectEvent], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RegisterObj
   ectEventCommand
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...