태그에는 Windows 8을 사용 중이라고 표시되어 있습니다. PowerShell이라는 훌륭한 도구와 이름이 작은 편리한 cmdlet이 있기 때문에 좋습니다 Register-ObjectEvent
.
텍스트 파일을 만들고 확장자를로 변경 한 .ps1
다음 아래 스크립트를 파일에 붙여 넣으십시오. 보고자하는 $watchedFolder
폴더로 변수를 변경하십시오 . robocopy 명령 등을 포함하도록 Do-Something 기능을 변경하십시오. 스크립트가 실행되고있는 한 감시 폴더에서 파일이나 폴더가 변경 될 때마다 해당 기능이 실행됩니다 (거의 즉시!).
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 프로세스를 종료하십시오.
일부 배경 정보 -이 답변에 사용 된 도구에 익숙하지 않은 경우.