Эксклюзивный доступ к файлам в лог-файл с VBScript и FileSystemObject - PullRequest
4 голосов
/ 30 октября 2008

У меня есть сценарий VBS, который в настоящее время записывает в файл журнала. Этот скрипт может быть запущен из нескольких моих одновременных процессов, так что теперь я беспокоюсь о параллелизме.

В настоящее время я использую FileSystemObject для открытия и записи в этот файл. FSO поддерживает эксклюзивный доступ к файлам?

Ответы [ 3 ]

4 голосов
/ 30 октября 2008

Да, FileSystemObject поддерживает эксклюзивный доступ к файлам. Если при вызове OpenTextFile другой процесс заблокировал файл, вы получите сообщение об ошибке (ошибка в разрешении запрещена). Вы должны быть в состоянии перехватить ошибку и обработать ее соответствующим образом (проверьте, что Err.Number <> 0 после вызова OpenTextFile - это единственный способ сделать это).

0 голосов
/ 23 декабря 2008

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

set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "jfdskfdkls"
objFSO.Close
'something something
set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "gfdgfdgfd"
objFSO.Close
'something else
set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "ddsgfgdfsgdfs"
objFSO.Close
0 голосов
/ 30 октября 2008

Я не знаю, насколько доступным для вас является API Windows, но вы должны взглянуть на инфраструктуру отладки в Windows API.

Вот хорошая статья о Code Project здесь В основном использование OutputDebugString и его перехват с помощью DebugView или передача его в файл устранит проблему с блокировкой файла журнала, а также удалит бутылочное горлышко нескольких сценариев, поставленных в очередь для записи в файл журнала.

Надеюсь, это поможет.

...