Довольно часто нужно имя файла без его расширения, или получить имя и расширение файла в заданном пути. В большинстве случаев, такие задачи возникают при программировании, например, когда надо получить список файлов, имена которых будут в заданном формате.
Одним из вариантов решения поставленной задачи является использование объекта FileSystemObject, а точнее, его методов, давайте познакомимся с ними…
Получить имя файла
GetBaseName(path) – данный метод предоставляет возможность получить базовое имя файла без его расширения.
GetExtensionName(path) – возвращает расширения файла.
GetFileName(path) – вернёт полное имя файла вместе с его расширением.
Все три метода принимают один параметр (path), который содержит строковое значение, а именно, полный путь к анализируемому файлу.
Хорошо, теперь давайте приступим к практической стороне, а именно, напишем два примера, которые позволят получить имя файла – полное, без расширения и только расширение. Один пример на языке vbscript, а другой на языке jscript. Логика обоих сценариев будет аналогичной, то есть, в текущем каталоге будет создаваться новая папка, далее, в ней будут создаваться три временных файла. В самом конце будет происходить вывод списка, содержащего полное имя файла в файловой системе, его базовое имя и расширение.
И так, первый пример:
'*********************************************************************** ' Объект 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«), получить имя файла.
Обратите внимание, что методам 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, которые позволяют получить тот или иной формат имени файла или его расширение, если есть вопросы, пишите в комментариях, так же подписывайтесь на сайт для получения новых статей.