代码之家  ›  专栏  ›  技术社区  ›  Garrett

从PowerShell中注册的事件输出中拆分字符串

  •  0
  • Garrett  · 技术社区  · 8 年前

    我刚开始和 IO.FIleSystemWatcher . 我当前的代码可以工作,并提醒我在所需位置创建了文件,但是我想将一些变量导出并拆分字符串。我不能让分割部分工作。

    功能代码:

    $folder = 'D:\Output'
    $filter = '*.jpg'
    
    $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;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 D:\Output\scans\$name.txt    
    }
    

    $name 将始终格式化为“file.name.fn_xxx.jpg”,我想使用 split 从中提取“文件” 美元名称 ,例如:

    $name.split('.')[0]
    

    然而,据我所知,这一点都不起作用。例如,我可以输出一个文件 美元名称 作为文件名,但是如果我尝试先拆分它,就没有输出。

    非功能代码:

    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
    
    $name = $name.split('.')[0]    
    Out-File D:\Output\scans\$name.txt    
    }
    

    这有点超出我的想象,所以任何建议或建议都会受到赞赏。

    谢谢

    1 回复  |  直到 8 年前
        1
  •  0
  •   Garrett    8 年前

    最后我只用另一个变量来计算。

    $folder = 'D:\Output'
    $filter = '*.jpg'
    
    $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;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
    Write-Host "$name"
    
    $x = $name.split(".")[0]
    Out-File D:\Output\scans\$x.txt
    

    我不知道为什么会这样,但确实如此。如果有人知道原因,请评论!

    推荐文章