Описание функции


TmpFile

Генерирует имя несуществующего файла в папке %temp%, возвращая путь

TmpFile(DirName$ = "", Prefix$ = "~", Ext$ = ".tmp", RandomLength = 7)

Параметры

DirName$ Путь к папке для файла, если пусто, то %temp%
Prefix$ Строка, которая будет добавлена в начало имени файла.
Ext$ Расширение файла.
RandomLength Число генерируемых символов.

Возвращаемое значение

Возвращает полный путь к файлу, которого не существует.

Примечания

Миниммально допустимое RandomLength = 4, иначе можно достичь заполнения 26*26*26*26 = 456976, а уже на половине цикл будет часто попадать в существующие файлы, а при заполнении не выйдет из него.

Пример

EnableExplicit

; AZJIO (вариант из AutoIt3, а по ссылке есть упрощённые варианты)
; https://www.purebasic.fr/english/viewtopic.php?t=80994
Procedure.s TmpFile(DirName$ = "", Prefix$ = "~", Ext$ = ".tmp", RandomLength = 7)
    Protected TmpName$

    If RandomLength < 4 Or RandomLength > 130
        RandomLength = 7
    EndIf
    If Not Asc(DirName$) Or FileSize(DirName$) = -1
        DirName$ = GetTemporaryDirectory()
    EndIf

    If Not CheckFilename(Prefix$)
        Prefix$ = "~"
    EndIf
    If Not CheckFilename(Ext$)
        Ext$ = ".tmp"
    EndIf

    If Right(DirName$, 1) <> #PS$
        DirName$ + #PS$
    EndIf
    If Asc(Ext$) And Left(Ext$, 1) <> "."
        Ext$ = "." + Ext$
    EndIf

    Repeat
        TmpName$ = ""
        While Len(TmpName$) < RandomLength
            TmpName$ + Chr(Random(122, 97))
        Wend
        TmpName$ = DirName$ + Prefix$ + TmpName$ + Ext$
    Until FileSize(TmpName$) = -1

    ProcedureReturn TmpName$
EndProcedure

Debug TmpFile()