2015-04-01 2 views
2

У меня есть код powershell, который действует как прослушиватель файлов по заданному пути к папке. Слушатель запускает вызов командной строки другой программе, которая открывается и воспроизводит файл.Powershell - проверить, закончен ли файл записи

Проблема заключается в том, что код powershell немедленно запускает вызов командной строки, если какой-либо файл помещается в эту папку. Это проблема, если файл очень большой (скажем, 100 + mb), потому что, когда человек копирует файл в папку, файл может быть сделан только 5% «написание», когда функция команды запускается и пытается открыть файл (и не удается).

есть ли способ в PowerShell, чтобы проверить, сохраняется ли файл еще? Таким образом, я мог бы построить цикл, который будет проверять каждые x секунд и запускаться только после завершения записи.

Сохраняет ли файл «замок», если он тоже написан? Можно ли это проверить в Powershell?

Спасибо всем!

ответ

3

В System.IO.FileInfo может быть проверка блокировки, или где-то в этом роде, но я использую простоту проверки длины. Он вызывается в вызываемом скрипте, а не в сценарии просмотра файлов.

$LastLength = 1 
$NewLength = (Get-Item $FileName).length 
while ($NewLength -ne $LastLength) { 
    $LastLength = $NewLength 
    Start-Sleep -Seconds 60 
    $NewLength = (Get-Item $FileName).length 
} 
Смежные вопросы