我想每30秒监视一个文件的日期和时间



我想监视文件的日期和时间。我编写的代码可以随心所欲地完成任务,但我无法重新定位gui窗口。我试了所有我能找到的,比如">开始作业";或者创建一个新的运行空间,但我在richtextbox中没有得到任何结果。欢迎提出任何建议。

$targetFile = "full path"
# Function - Add Text to RichTextBox
function Add-RichTextBox{
[CmdletBinding()]
param ($text)
#$richtextbox_output.Text += "`tCOMPUTERNAME: $ComputerName`n"
$richtext.Text += "$text"
$richtext.Text += "`n"
}
# Windows Form    
$form = New-Object System.Windows.Forms.Form
$form.Text = "Monitor script"
$form.Size = New-Object System.Drawing.Size(400,300)
$form.StartPosition = 'CenterScreen'
$Font = New-Object System.Drawing.Font("Tahoma",11)
$Form.Font = $Font

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(20,40)
$label.Size = New-Object System.Drawing.Size(200,20)
$label.Text = (Get-Date).ToString()
$form.Controls.Add($label)
$StartButton = New-Object System.Windows.Forms.Button
$StartButton.Location = New-Object System.Drawing.Point(150,220)
$StartButton.Size = New-Object System.Drawing.Size(100,33)
$StartButton.Text = 'Start'
#$StartButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $StartButton
$form.Controls.Add($StartButton)
$StartButton.Add_click({
while($true){
$lastdate = Get-ChildItem $targetFile
$Date = $lastdate.LastAccessTime.ToString()
Add-RichTextBox "$date"
$richtext.SelectionStart = $richtext.TextLength
$richText.ScrollToCaret()
#$richtext.refresh()
#$form.refresh()
Start-sleep 30
}
})

## the Rich text box
$richtext = new-object System.Windows.Forms.RichTextBox
$richtext.Location = New-Object System.Drawing.Point(20,60)
$richtext.multiline = $true
$richtext.Name = "Results"
$richtext.text = "Results:`n"
$richtext.scrollbars = "Both"
$richtext.Height  = 120
$richtext.width = 350
$richtext.font = new-object system.drawing.font "Lucida Console",10
$Form.controls.add($richtext)

$Form.Add_Shown({$Form.Activate()})
$form.ShowDialog()

继续我的评论,在表单上使用Timer(如果你绝对不想要FileSystemWatcher(,下面是你可以做到的方法:

$targetFile   = "D:Testblah.txt"
$lastAccessed = (Get-Date)   # a variable to keep track of the last LastAccessTime of the file
# Windows Form    
$form               = New-Object System.Windows.Forms.Form
$form.Text          = "Monitor script"
$form.Size          = New-Object System.Drawing.Size(400,300)
$form.StartPosition = 'CenterScreen'
$Font      = New-Object System.Drawing.Font("Tahoma",11)
$form.Font = $Font
# Label
$label          = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(20,40)
$label.Size     = New-Object System.Drawing.Size(200,20)
$label.Text     = (Get-Date).ToString()
$form.Controls.Add($label)
# Button
$StartButton          = New-Object System.Windows.Forms.Button
$StartButton.Location = New-Object System.Drawing.Point(150,200)
$StartButton.Size     = New-Object System.Drawing.Size(100,33)
$StartButton.Text     = 'Start'
$form.Controls.Add($StartButton)
$StartButton.Add_click({
$timer.Enabled = $true
$timer.Start()
})

# RichTextBox
$richtext            = New-Object System.Windows.Forms.RichTextBox
$richtext.Location   = New-Object System.Drawing.Point(20,60)
$richtext.Multiline  = $true
$richtext.Name       = "Results"
$richtext.Text       = "Results:`r`n"
$richtext.ScrollBars = "Both"
$richtext.Height     = 120
$richtext.Width      = 350
$richtext.Font       = New-Object System.Drawing.Font "Lucida Console",10
$form.Controls.Add($richtext)
# Timer
$timer = New-Object System.Windows.Forms.Timer 
$timer.Interval = 30000   # 30 seconds
$timer.Enabled  = $false  # disabled at first
$timer.Add_Tick({ 
$file = Get-Item -Path $targetFile -ErrorAction SilentlyContinue
# if we can find the file and its last AccessedTime is not 
# the same as we already stored in variable $lastAccessed
# use script-scoping here, so $script:lastAccessed instead of $lastAccessed
if ($file -and $file.LastAccessTime -gt $script:lastAccessed) {
$richtext.AppendText("$($file.LastAccessTime.ToString())`r`n")
$script:lastAccessed = $file.LastAccessTime  # remember this new datetime
}
})
$form.ShowDialog()
# Important: Clean up
$timer.Stop()
$timer.Dispose()
$richtext.Dispose()
$form.Dispose()

相关内容

最新更新