【问题标题】:Copying a file on change using PowerShell使用 PowerShell 在更改时复制文件
【发布时间】:2013-11-25 17:12:05
【问题描述】:

我使用FileSystemWatcher 通知文件更改,然后创建该文件的副本:

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Orders\"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true

$changed = Register-ObjectEvent $watcher "Changed" -Action {
   write-host "Changed: $($eventArgs.FullPath)"
   $datestamp = get-date -uformat "%Y%m%d%H%M%S" 
   write-host $datestamp
   copy-item $eventArgs.FullPath "$(watcher.Path)backup-$datestamp"
}

因此,如果 C:\Orders\orders.xml 发生更改,则应创建 C:\Orders\backup-20131125121004。但是,这不起作用,并且不会产生错误。通知确实有效,只是副本无效:

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Documents and Settings\sladministrator\Desktop> .\WatchBizSyncOrders.ps1
PS C:\Documents and Settings\sladministrator\Desktop> Changed: C:\Orders\New Text Document.txt
20131125100821

【问题讨论】:

    标签: powershell filesystemwatcher copy-item


    【解决方案1】:

    改变这个:

    $(watcher.Path)backup-$datestamp"
    

    $($sender.Path)backup-$datestamp"
    

    注意$() 中的变量仍然需要$。而$sender 自动变量将始终包含生成事件的对象。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2021-11-27
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多