geöffnete textdatei feststellen (*.dat)

  • An alle Profis,

    kann man irgendwie festestellen, ob eine *.dat - Datei von Windows noch gesperrt ist.

    Problem:
    Unterschiedliche Windowsbenutzer sperren immer wieder verschiedene *.dat-Dateien, obwohl sie nicht mehr darauf zugreifen. Am Server kann man die geöffneten Dateien in der Computerverwaltung herausfinden.

    Diese Datei(en) werden von einer Clientsoftware in einem Schnittstellenverzeichnis für unterschiedliche Datensätze und Datenfiles erstellt, die dann mittels "filemove" in ein zentrales Verzeichnis verschoben werden.

    Dies funktioniert nur dann problemlos, wenn "Windows" diese Datei(ein) wieder freigegeben hat. Ist das nicht der Fall, funktioniert mir schon bei EINER geöffneten Datei das "filemove"-Script nicht mehr. Die zu übermittelnden Dateien bleiben in diesem Verzeichnis liegen.

    Gibt es hier einen Lösungsansatz, wie ich diese gesperrten Dateien zumindest übergehen kann??? ?(

    Vielen Dank schon im voraus.

    Einmal editiert, zuletzt von superpati (5. Februar 2011 um 19:02)

  • das ist ein ganz gewöhlicher "filemove" aus 2 verschiedenen Verzeichnissen in ein zentrales "Datain"-Verzeichnis

    $von1="v:\pcssw\interface\ish\datain\"
    $von2="w:\pcssw\interface\ish\datain\"
    $in="h:\datain\"
    $file="*.dat"

    FileMove($von1,$in,$file)
    Sleep(15000)
    FileMove($von2,$in,$file)

  • Das hier sollte ohne großen Geschwindigkeitsverlust funktionieren.

    Spoiler anzeigen
    [autoit]

    #include "FileListRekursiv.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $von1="v:\pcssw\interface\ish\datain\"
    $von2="w:\pcssw\interface\ish\datain\"
    $in="h:\datain\"
    $file="*.dat"

    [/autoit] [autoit][/autoit] [autoit]

    $aFiles1 = _FileListToRekursiv($von1, $file)
    $aFiles2 = _FileListToRekursiv($von2, $file)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aFiles1[0]
    ConsoleWrite($i & ". - " & $aFiles1[$i] & " : " & FileMove($von1 & $aFiles1[$i], $in & $aFiles1[$i], 1) & @CRLF)
    Next
    For $i = 1 To $aFiles2[0]
    ConsoleWrite($i & ". - " & $aFiles2[$i] & " : " & FileMove($von1 & $aFiles2[$i], $in & $aFiles2[$i], 1) & @CRLF)
    Next

    [/autoit]


    Die Datei im Anhang muss noch ins selbe Verzeichnis wie das Script.