문제

정황:

  • Windows 98 SE
  • WMI를 사용할 수 없습니다

msscript를 사용하여 vbscript의 스테로이드 랩핑을 사용하여 작성된 코드가 있습니다.

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

해당 호출 파일 .collectFiles와 함께 많은 디스크 활동이 있습니다. 파일의 폴더를 실제로 스캔하지 않고 폴더 내용의 변경을 감지하는 방법이 있습니까?

도움이 되었습니까?

해결책

"폴더의 내용의 변경"을 정의하십시오.

파일이 추가, 삭제 또는 이름이 바뀌 었다는 것을 의미하면 이러한 이벤트가 발생할 때마다 폴더의 수정 된 타임 스탬프가 업데이트됩니다.

대신 파일이 수정 된시기를 알고 싶다면 파일을 읽어야합니다.

즉, 무엇을하려고하는지 살펴보면 (새 .USV 파일의 폴더를 스캔하고 처리하고 삭제하십시오), 폴더의 타임 스탬프를 추적하고 CollectFiles를 호출하기 직전에 업데이트하는 것이 가장 좋습니다. (로그에 올바른 시간은 CollectFiles를 호출하기 직전에 있습니다. 그렇지 않으면 CollectFiles 호출 중 또는 즉시 파일이 추가되면 깨어날 위험이 있습니다).

다른 팁

Win95에서 At Leas WinXP까지 모든 버전에서 작동한다고 주장하는 샘플이 있습니다. VB5와 함께 Win98에 의해 개발되었습니다. (아래의 Docu에 대한 링크를 제공 한) 사용하지 않은 shchangenotify* 함수를 사용합니다.

Shchangenotifyregister : 쉘 변경 알림을받습니다

shchangenotifyregister 기능 shchangenotifyderegister 기능

사용하는 또 다른 솔루션이 있습니다 readDirectoryChangesw 여기:

vb6 winapi readDirectoryChangesw (Yang Kok Wah에서 5 번째 게시물을 확인하십시오)

당신은 구체적으로 VB에서 무언가를 요청하고 Win98에서 실행 중이며 이에 대한 답이 없지만 MS는 Windows2000+에서이를 달성하는 방법에 대한 AC/Win32 예제가 있습니다. findfirstchangenotification. 또 다른 것은 분명히 "FileSystemWatcher".NET에서 Win98에서 작동/지원되지 않습니다. 내 요점은 무엇입니까?이를위한 쉬운 해결책이없고 스스로 무언가를 생각해 내야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top