Описание функции
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()