_GetUniqueFileName

    • Offizieller Beitrag

    Hier kommt wieder mal eine kleine Hilfsfunktion (brauchte ich gerade).
    Damit kann man testen, ob eine Datei bereits existiert. Wenn ja, wird automatisch ein Zähler an den Dateinamen angehängt, sodass man sicher sein kann, dass man keine Datei überschreibt.

    Spoiler anzeigen
    [autoit]


    $sFilename = @AutoItExe
    $sFilename = _GetUniqueFileName($sFilename)
    If @error Then
    ConsoleWrite('Fehler = ' & @error & @CR)
    Else
    ConsoleWrite('Dateiname = "' & $sFilename & '"' & @CR)
    EndIf

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

    ;===============================================================================
    ; Function Name: _GetUniqueFileName($sPath)
    ; Description:: Wenn der Dateiname bereits existiert wird ein Zähler
    ; in Form von: "_(1)" an den Dateinamen angehängt.
    ; Parameter(s): $sPath = kompletter Pfad der Datei
    ; Requirement(s): -
    ; Return Value(s): bei Erfolg = der (neue) Dateiname
    ; bei Fehler wird @error = 1 (Pfad falsch angegeben)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _GetUniqueFileName($sPath)
    Local $aPath, $sNumber = '', $iCount = 0
    $aPath = StringRegExp($sPath, '(.+\\)(.+)(\..+)', 3)
    If @error Then Return SetError(1, 0, 0)
    While FileExists($aPath[0] & $aPath[1] & $sNumber & $aPath[2])
    $iCount += 1
    $sNumber = '_(' & $iCount & ')'
    WEnd
    Return $aPath[0] & $aPath[1] & $sNumber & $aPath[2]
    EndFunc ;==>_GetUniqueFileName

    [/autoit]
  • Danke, sowas kann man immer mal gebrauchen. :thumbup:
    Ist ähnlich wie _FileGetNextBackup für meinen CSV-Editor.

    Spoiler anzeigen
    [autoit]

    Func _FileGetNextBackup($sFile)
    ;funkey 2010, April, 02
    Local $NextFile
    Local $sExt = _FileGetExt($sFile)
    For $i = 1 To 999
    $NextFile = StringFormat(StringTrimRight($sFile, StringLen($sExt)) & "(%003i)." & $sExt, $i)
    If Not FileExists($NextFile) Then ExitLoop
    Next
    Return $NextFile
    EndFunc ;==>_FileGetNextBackup

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

    Func _FileGetExt($sFileName)
    Local $sExt = StringTrimLeft($sFileName, StringInStr($sFileName, ".", 0, -1))
    If StringInStr($sExt, "\") Or StringInStr($sExt, "/") Then Return "" ;no extension
    Return $sExt
    EndFunc ;==>_FileGetExt

    [/autoit]
  • Hi Oscar!


    Auch sehr schön mir sind dazu noch ein Ideen eingefallen zB. sortirung mit zuwesiung oder index für andere sachen o. unsichtbarer zweitspeicher!


    LG kleiner