Объект FileSystemObject метод GetFileName, GetBaseName и GetExtensionName — Получить имя файла

Объект FileSystemObject метод GetFileName, GetBaseName и GetExtensionName — Получить имя файла Объектная модель Windows Script Host

Довольно часто нужно имя файла без его расширения, или получить имя и расширение файла в заданном пути. В большинстве случаев, такие задачи возникают при программировании, например, когда надо получить список файлов, имена которых будут в заданном формате.

Одним из вариантов решения поставленной задачи является использование объекта FileSystemObject, а точнее, его методов, давайте познакомимся с ними…

Получить имя файла

GetBaseName(path) – данный метод предоставляет возможность получить базовое имя файла без его расширения.

GetExtensionName(path) – возвращает расширения файла.

GetFileName(path) – вернёт полное имя файла вместе с его расширением.

Все три метода принимают один параметр (path), который содержит строковое значение, а именно, полный путь к анализируемому файлу.

Хорошо, теперь давайте приступим к практической стороне, а именно, напишем два примера, которые позволят получить имя файла – полное, без расширения и только расширение. Один пример на языке vbscript, а другой на языке jscript. Логика обоих сценариев будет аналогичной, то есть, в текущем каталоге будет создаваться новая папка, далее, в ней будут создаваться три временных файла. В самом конце будет происходить вывод списка, содержащего полное имя файла в файловой системе, его базовое имя и расширение.

Файловая система Windows - получить полное имя файла, короткое и расширение

И так, первый пример:

'***********************************************************************
' Объект FileSystemObject методы GetFileName GetBaseName GetExtensionName
' Получить имя файла с расширение, без и само расширение
' GetFile_Base_Extensionname.vbs
'***********************************************************************
 
Option Explicit 
 
dim FSO, WshShell, cur_dir, new_folder, new_file, list, index
 
'Создаем объект FileSystemObject
set FSO=WScript.CreateObject("Scripting.FileSystemObject")
 
' Создаем объект WScript.Shell
set WshShell = WScript.CreateObject("WScript.Shell")
 
' путь к текущему каталогу
cur_dir = WshShell.CurrentDirectory
 
' в текущей папке создаем новый каталог
set new_folder=FSO.CreateFolder("Новый каталог_vbs")
 
list = "Содержимое папки" & new_folder & vbCrLf & vbCrLf
 
' создаем 3 временных файла
for index=1 to 3
    'получить полное имя временного файла
    new_file = FSO.GetTempName
    ' создаем временный    файл
    FSO.CreateTextFile(new_folder & "\" & new_file)
    ' получаем список
    list = list & "Полное имя: " & FSO.GetFileName(new_folder & "\" & new_file) & vbCrLf
    list = list & "Базовое имя: " & FSO.GetBaseName(new_folder & "\" & new_file) & vbCrLf
    list = list & "Расширение: " & FSO.GetExtensionName(new_folder & "\" & new_file) & vbCrLf & vbCrLf
next
 
' выводим значение переменной list 
WScript.Echo list

Начнём с назначения переменных, которые мы объявили с помощью ключевого слова dim:

FSO – данная переменная будет хранить ссылку на экземпляр объекта FileSystemObject, то, что это именно ссылка, определяет ключевое слово set. Для формирования ссылки мы использовали функцию CreateObject объекта Wscript.

WshShell – эта переменная хранит ссылку на объект WScript.Shell, который нужен, что бы получить имя файла, являющегося временным.

cur_dir – тут мы храним полный путь к текущему каталогу (каталог, из которого запущен данный сценарий), для этого, мы использовали свойство CurrentDirectory (смотрите статью «Объект WScript.Shell — метод ExpandEnvironmentStrings и свойство CurrentDirectory«)

new_folder – хранит путь к новому каталогу, который мы создали с помощью метода CreateFolder (статья «Объект FileSystemObject метод CreateFolder«).

new_file – значение будет содержать полное имя временного файла, его мы назначаем с помощью метода GetTempName (статья «Объект FileSystemObject метод DeleteFile и GetTempName«).

list – хранит список с нужными значениями.

index – переменная используется в цикле for.

Сам текстовый документ мы создаем с помощью метода CreateTextFile (статья «Объект FileSystemObject метод CreateTextFile«), получить имя файла.

Получение имени файла с помощью объекта FileSistemObject

Обратите внимание, что методам GetFileName, GetBaseName и GetExtensionName мы передаем строку, состоящую из слияния двух переменных (new_folder и new_file), между которыми мы вставляем разделитель (косую черту).

Скачать архив с примерами

А вот аналогичный пример, который позволяет получить имя файла, но уже на языке jscript:

//***********************************************************************
// Объект FileSystemObject методы GetFileName GetBaseName GetExtensionName
// Получить имя файла с расширение, без и само расширение
// GetFile_Base_Extensionname.js
//***********************************************************************
 
var FSO, WshShell, cur_dir, new_folder, new_file, list, index;
 
//Создаем объект FileSystemObject
FSO=WScript.CreateObject("Scripting.FileSystemObject");
 
// Создаем объект WScript.Shell
WshShell = WScript.CreateObject("WScript.Shell");
 
// путь к текущему каталогу
cur_dir = WshShell.CurrentDirectory;
 
// в текущей папке создаем новый каталог
new_folder=FSO.CreateFolder("Новый каталог_js");
 
list = "Содержимое папки" + new_folder + "\n\n";
 
// создаем 3 временных файла
for (index=1; index<=3; index++){ 
    //получить полное имя временного файла
    new_file = FSO.GetTempName();
    // создаем временный    файл
    FSO.CreateTextFile(new_folder + "\\" + new_file);
    // получаем список
    list += "Полное имя: " + FSO.GetFileName(new_folder + "\\" + new_file) + "\n";
    list += "Базовое имя: " + FSO.GetBaseName(new_folder + "\\" + new_file) + "\n";
    list += "Расширение: " + FSO.GetExtensionName(new_folder + "\\" + new_file) + "\n\n";
}
 
// выводим значение переменной list 
WScript.Echo (list);

Тут в принципе производятся те же действия, только создается новая папка под другим именем (чтобы не создавать конфликт), вместо перевода строки мы используем последовательность «n», ну и косую черту мы прописываем дважды.

И так, мы рассмотрели три метода объекта FileSystemObject —  GetFileName, GetBaseName и GetExtensionName, которые позволяют получить тот или иной формат имени файла или его расширение, если есть вопросы, пишите в комментариях, так же подписывайтесь на сайт для получения новых статей.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий