سؤال

شروط:

  • ويندوز 98 سي
  • WMI غير متوفر

لدي كود يشبه هذا، مكتوب باستخدام غلاف VBScript الستيرويدي باستخدام MSScript.

do
    a = files.collectfiles( "c:\userver", "" )
    for i = 0 to ubound( a )
        f = a(i)
        if strings.endswith( f, ".usv" ) then
            d = files.readfilee( f )
            on error resume next
            executeglobal d
            nErr = err.number
            sErr = err.description
            on error goto 0
            if nErr <> 0 then
                trace "*** Error " & nErr & ", " & sErr
            end if
            files.deletefile f
        end if
    next
    system.sleep 10
    system.cooperate
loop

هناك الكثير من نشاط القرص مع هذا الاستدعاء إلى files.collectfiles.هل هناك طريقة ما لاكتشاف أي تغيير في محتويات المجلد دون فحص المجلد فعليًا بحثًا عن الملفات؟

هل كانت مفيدة؟

المحلول

حدد "التغيير في محتويات المجلد".

إذا كان ذلك يعني إضافة ملف أو حذفه أو إعادة تسميته، فسيتم تحديث الطابع الزمني المعدل للمجلد كلما حدث مثل هذا الحدث.

إذا كنت تريد بدلاً من ذلك معرفة متى يتم تعديل الملفات، فستحتاج إلى قراءتها.

ومع ذلك، بالنظر إلى ما تحاول القيام به (فحص مجلد بحثًا عن ملفات .usv جديدة، ومعالجتها وحذفها)، فمن الأفضل تتبع الطابع الزمني الموجود على المجلد وتحديثه مباشرةً قبل الاتصال بملفات التجميع. (لاحظ أن الوقت الصحيح للتسجيل هو فقط قبل استدعاء ملفات التجميع، وإلا فإنك تتعرض لخطر عدم الاستيقاظ إذا تمت إضافة ملف أثناء استدعاء ملفات التجميع أو بعد ذلك مباشرة).

نصائح أخرى

توجد عينة تدعي أنها تعمل على كافة الإصدارات بدءًا من نظام التشغيل Win95 وحتى نظام التشغيل WinXP على الأقل.تم تطويره تحت Win98 مع VB5.باستخدام (ثم؟الروابط المقدمة إلى المستند أدناه) وظائف SHChangeNotify* غير الموثقة.

SHChangeNotifyRegister:تلقي إخطارات تغيير شل

وظيفة SHChangeNotifyRegister وظيفة SHChangeNotifyDeregister

هناك حل آخر باستخدام قراءة دليل التغييراتW هنا:

VB6 WinAPI ReadDirectoryChangesW (راجع المشاركة الخامسة من يانغ كوك واه)

لقد طلبت على وجه التحديد شيئًا ما في VB ويعمل على نظام التشغيل Win98 وليس لدي إجابة لهذا السؤال، ولكن MS لديه مثال c/win32 حول كيفية تحقيق ذلك على نظام التشغيل Windows2000+ باستخدام FindFirstChangeNotification.شيء آخر هو أنه على ما يبدو "FileSystemWatcher"في .NET لا يعمل/يدعم على نظام التشغيل Win98.ما هي وجهة نظري؟ربما لا يوجد حل سهل لهذا الأمر وعليك أن تتوصل إلى شيء بنفسك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top