我寫了一些PowerShell來檢查新文件,並且當一個新文件被創建時它會運行一個動作。文件監視器存檔器Powershell
該操作是檢查文件名並檢查以前的版本,如果有以前的版本,則將以前的版本移動到存檔文件夾。以前的版本被定義爲這樣:
文件名結構:XXXX-XXXX-xx.pdf
首先XXXX可以是字符+數字的任何量。
第二個xxxx可以是任意數量的字符+數字。
第三部分只有數字00到99例如01 02 03
所以,如果我放在文件85080-00-02.pdf和85080-00-01.pdf存在它將移動後者文件到存檔文件夾,現在這一切工作正常與代碼我目前有。
該系統將由標準工程人員使用,因此我需要確保所有用戶錯誤都得到滿足。當我在第三部分使用字符運行我的代碼時,例如85080-00-0t(想象有人偶然鍵入t而不是5,不要問我如何,但我知道會發生),它會停止工作。
爲什麼我在任何地方看不到任何錯誤?如果我在代碼中添加
Write-Host
,我可以看到它在ISE中顯示輸出,但是當上述情況發生時我沒有看到任何錯誤。我如何得到這個正常工作?我可以告訴錯誤是因爲我的代碼試圖從字符串-1,這顯然導致它的問題。
因此,如何能我說:
如果$olddw
=任何數量從00 - 99進行的代碼,否則什麼也不做。
# Enter the root folder you want to monitor
$folder = **FOLDER LOCATION**
$archivefolder = **ARCHIVE FOLDER LOCATION**
# Enter the log file location
$log = **LOG LOCATION**
# You can enter a wildcard filter here.
$filter = '*.*'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $false;
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
#New file ObjectEvent
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
#Get new filename and create log
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Out-File -FilePath $log -Append -InputObject "The file '$name' was $changeType at $timeStamp"
#Set old filename
$oldname = $name.Substring(0, $name.Length-4)
$olddw = "{0:D2}" -f (($oldname.Substring($oldname.Length - 2)) - 1)
$oldfilename = ($oldname.Substring(0, $oldname.Length-2) + $olddw + ".pdf")
$oldfilelocation = ($folder + $oldfilename)
#Check if old filename exists if so move it to archive folder
$FileExists = Test-Path $oldfilelocation
if ($FileExists -eq $true) {
Move-Item $oldfilelocation $archivefolder
Out-File -FilePath $log -Append -InputObject "The file '$oldfilename' was Archived at $timeStamp"
} else {
# do nothing
}
}
#To view current ObjectEvent's
#Get-EventSubscriber
#To stop current ObjectEvent
#Unregister-Event FileCreated
下午Ansgar文件的移動工作正常我已經在我的帖子中說過。我對我的鏈接進行了硬編碼,我剛剛在代碼中將它們更改爲變量,因此可以輕鬆讀取它們。代碼的第二部分完全按照我希望它感謝您的輸入的方式工作。 ($ index-like'[0-9] [0-9]')是我正在尋找的!謝謝 – bepster