Выполнить пакетный файл, когда новый файл добавлен в папку - PullRequest
3 голосов
/ 08 мая 2011

Я использую приведенный ниже пример пакетного файла, полученный из пакетного файла, для отслеживания дополнений в папке загрузки . Я хотел бы изменить это так, чтобы он просматривал все подпапки.

У кого-нибудь есть идеи, как это сделать?

@echo off
if not exist c:\OldDir.txt echo. > c:\OldDir.txt
dir /b "d:\My Folder" > c:\NewDir.txt
set equal=no
fc c:\OldDir.txt c:\NewDir.txt | find /i "no differences" > nul && set equal=yes
copy /y c:\Newdir.txt c:\OldDir.txt > nul
if %equal%==yes goto :eof
rem Your batch file lines go here

1 Ответ

4 голосов
/ 08 мая 2011

Пожалуйста .... сделай это PowerShell?

http://archive.msdn.microsoft.com/PowerShellPack содержит функцию Start-FileSystemWatcher.

Пожалуйста, не применяйте этот пакетный файл в любой системе.


Powershell.com имеет образцы

Вот образец эта тема :

$folder = '<full path to the folder to watch>'
$filter = '*.*'                             # <-- set this according to your requirements
$destination = '<full path to the destination folder>'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
 IncludeSubdirectories = $true              # <-- set this according to your requirements
 NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
 $path = $Event.SourceEventArgs.FullPath
 $name = $Event.SourceEventArgs.Name
 $changeType = $Event.SourceEventArgs.ChangeType
 $timeStamp = $Event.TimeGenerated
 Write-Host "The file '$name' was $changeType at $timeStamp"
 Move-Item $path -Destination $destination -Force -Verbose # Force will overwrite files with same name
}

В конце концов, отмените регистрацию подписки: Unregister-Event -SourceIdentifier FileCreated

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...