gpt4 book ai didi

.net - FileSystemWatcher执行.NET功能

转载 作者:行者123 更新时间:2023-12-03 01:20:04 27 4
gpt4 key购买 nike

我正在创建一个快速的临时修复程序,很抱歉,如果它很脏,但是-

目标

我想使用Powershells Register-Event cmd等待文件拖放到文件夹中,然后调用解析文件并将其输出到excel的函数。我不需要编码方面的帮助,只需要概念。关于该事件的运行地点以及必须使用的资源,对我来说还是有点神秘。

我尝试过的事情

  • 一个.ps1文件,在其底部具有注册事件,在顶部调用一个函数,由批处理文件调用。
    行为:在此行停止:
    $sr = new-object System.IO.StreamReader($copyPath)

    这是我对.NET的第一次调用,因此这就是我假设它与.NET有关的原因。
  • FileWatcher和Parser这两个.ps1文件在分别运行时(由批处理文件调用)都很好用。
    行为:FileWatcher输出“此行”,但在解析器中无法输出任何行,并且永远不会到达该行。
    Register-ObjectEvent $fsw Changed -SourceIdentifier FileChange -Action {
    Write-Host "This Line"
    .\src\Parser.ps1
    Write-host "That Line"
    }
  • 我什至不顾一切地去了两个ps1文件和两个批处理文件。可以说这没有用。

  • 我正在使用的通用批处理文件命令:
    powershell.exe -noexit C:\scripts\src\FileWatcher.ps1

    问题

    为什么从已注册的事件中调用某些命令时运行正常,而.NET等其他命令却不起作用?

    我正在努力实现的目标是否可能?

    您有更好的方法实现我的目标吗? (仅脚本,请记住这是一个修复程序)。

    最佳答案

    以下为我工作(代码大部分从here复制):

    $folder = 'c:\Temp'
    $filter = '*.*'

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

    Register-ObjectEvent $monitor Created -SourceIdentifier FileCreated -Action {
    $name = $Event.SourceEventArgs.FullPath
    $sr = New-Object System.IO.StreamReader($name)
    Write-Host $sr.ReadToEnd()
    $sr.Close()
    }

    关于.net - FileSystemWatcher执行.NET功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302652/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com