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

Паразит

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

VB.NET:
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
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,078
Реакции
5,865
Баллы
648
VB.NET:
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
 

Паразит

Пользователь
Сообщения
61
Реакции
2
Баллы
18
Dragokas, а как сделать так, чтобы файл создавался в папке, откуда запускается скрипт?
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,078
Реакции
5,865
Баллы
648
Он по-умолчанию там и создаётся (если только не указать другой рабочий каталог через ярлык, например, или если не запустить скрипт "От имени Администратора").
Но, если хочется надёжности, чтобы железно указать путь рядом со скриптом, то его нужно получить и дописать к пути, например, так:

VB.NET:
Dim sCurPath

sCurPath = oFSO.GetParentFolderName(WScript.ScriptFullName)

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