แท็กของคุณรัฐคุณกำลังใช้ Windows 8 นี้เป็นสิ่งที่ดีเพราะคุณมีเครื่องมือที่ดีที่เป็น PowerShell และ cmdlet Register-ObjectEvent
ที่มีประโยชน์น้อยชื่อ
สร้างไฟล์ข้อความเปลี่ยนนามสกุลเป็น.ps1
วางสคริปต์ด้านล่างลงในไฟล์ เปลี่ยน$watchedFolder
ตัวแปรเป็นโฟลเดอร์ที่คุณต้องการดู เปลี่ยนฟังก์ชัน Do-Something เพื่อรวมคำสั่ง robocopy ของคุณหรืออะไรก็ตาม เรียกใช้สคริปต์ตราบใดที่สคริปต์กำลังเรียกใช้ฟังก์ชันนั้นจะทำงาน (เกือบจะทันที!) เมื่อใดก็ตามที่มีการเปลี่ยนแปลงไฟล์หรือโฟลเดอร์ในโฟลเดอร์ที่เฝ้าดู
คุณสามารถให้สคริปต์นี้ทำงานเมื่อเริ่มต้น windows และมันจะทำงานในพื้นหลังตลอดเวลาโดยไม่ต้องใช้ตัวจับเวลา
$block = {
function Do-Something
{
param ($message, $event)
# function to call when event is raised
# do a robocopy or whatever
Start-Process cmd.exe "/C echo $("{0} {1}" -f $event.SourceEventArgs.FullPath, $message)&pause"
}
$watchedFolder = "C:\Users\Admin-PC\Desktop"
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $watchedFolder
Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something "Created" $event }
Register-ObjectEvent -InputObject $watcher -EventName Deleted -SourceIdentifier File.Deleted -Action { Do-Something "Deleted" $event }
Register-ObjectEvent -InputObject $watcher -EventName Changed -SourceIdentifier File.Changed -Action { Do-Something "Changed" $event }
Register-ObjectEvent -InputObject $watcher -EventName Renamed -SourceIdentifier File.Renamed -Action { Do-Something "Renamed" $event }
}
$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))
Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock
เห็นมันในการดำเนินการ
เรียกใช้สคริปต์ที่บันทึกไว้
คุณจะเห็นแฟลชหน้าต่างคอนโซลหลังจากพวกเขาปิดตัวบ่งชี้เดียวที่กำลังทำงานอยู่จะเป็นกระบวนการใหม่สองสามอย่าง
ทำบางสิ่งบนเดสก์ท็อปของคุณเพื่อทดสอบ
- จบกระบวนการ PowerShell ที่สร้างขึ้นเมื่อคุณไม่ต้องการให้เรียกใช้อีกต่อไป
ข้อมูลความเป็นมาบางอย่าง - ในกรณีที่คุณไม่คุ้นเคยกับเครื่องมือที่ใช้ในคำตอบนี้
- สำหรับข้อมูลเพิ่มเติมเกี่ยว
System.IO.FileSystemWatcher
กรุณาเยี่ยมชมของหน้า MSDN
- สำหรับตัวอย่างเพิ่มเติมบางส่วนของเหตุการณ์ใน PowerShell เยี่ยมชมบล็อกของผมพบว่ามีประโยชน์
- สำหรับไพรเมอร์ใน Windows PowerShell ฉันพบว่าไซต์นี้มีประโยชน์ (ฉันชอบเคล็ดลับประจำวัน)
- หากคุณกำลังใช้ Windows รุ่นเก่าหรือด้วยเหตุผลบางอย่างที่คุณไม่ได้มีการติดตั้ง PowerShell คุณสามารถดาวน์โหลดWindows จัดการ 4.0