VBS Поиск свободного файла

Паразит

Участник
Сообщения
62
Реакции
1
Привет. Задача такая. Создать текстовый документ.
Если документ существует, надо его не переписывать, а добавить счётчик.

VB.NET / VBA:
Dim FSO, Name, Ext
Set FSO = CreateObject("Scripting.FileSystemObject")

Name = "777"
Ext = ".txt"
    If Not fso.FileExists(Name) Then
    Set Txt = FSO.CreateTextFile(Name & Ext, False)
    Else
Set Txt = FSO.CreateTextFile(Name + 1 & Ext, False)
    End If

Как мне проверить имя с расширением?
Код:
If Not fso.FileExists(Name+Ext) Then
 
Последнее редактирование:
VB.NET / VBA:
Option Explicit

Dim oFSO, oTS, Name, Ext, sPath
Set oFSO = CreateObject("Scripting.FileSystemObject")

Name = "777"
Ext = ".txt"

sPath = GetEmptyName(Name & Ext)

Set oTS = oFSO.CreateTextFile(sPath, False)

set oTS = Nothing
set oFSO = Nothing

Function GetEmptyName(sPath)
    Dim sNewPath, sName, sExt, sDir, i
    if not oFSO.FileExists(sPath) then
        GetEmptyName = sPath
    else
        sName = oFSO.GetBaseName(sPath)
        sExt = oFSO.GetExtensionName(sPath)
        sDir = oFSO.GetParentFolderName(sPath)
        i = 1
        Do
            sNewPath = oFSO.BuildPath(sDir, sName & "(" & i & ")." & sExt)
            i = i + 1
        Loop while oFSO.FileExists(sNewPath)
        GetEmptyName = sNewPath
    end if
End Function
 
Он по-умолчанию там и создаётся (если только не указать другой рабочий каталог через ярлык, например, или если не запустить скрипт "От имени Администратора").
Но, если хочется надёжности, чтобы железно указать путь рядом со скриптом, то его нужно получить и дописать к пути, например, так:

VB.NET / VBA:
Dim sCurPath

sCurPath = oFSO.GetParentFolderName(WScript.ScriptFullName)

sPath = GetEmptyName(oFSO.BuildPath(sCurPath, Name & Ext))
 
Назад
Сверху Снизу