Объект FileSystemObject метод MoveFile — Перемещение файлов

Объект FileSystemObject метод MoveFile — Перемещение файлов Объектная модель Windows Script Host

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

В этой статье мы рассмотрим методы объекта FileSystemObject, которые показывают, как программным путём с помощью сценариев Windows Script Host переместить файлы в указанное место, получить полный путь  из относительного пути, путь к родительскому каталогу или имя диска, на котором находится заданный каталог.

Хорошо, прежде чем приступать к программированию и описанию методов, давайте вспомним, как переместить файл рядовым методом в операционной системе Windows. Что бы переместить файл из одной папки в другую, нужно просто зажать клавишу "Shift» и переместить нужный файл, или папку с файлами в другое место (на другой диск или в другой каталог). Тут, как говорится, элементарно. Теперь давайте рассмотрим наши методы объекта FileSystemObject, который отвечает за работу с файловой системой Windows.

Следующие три методы в качестве параметра (parthspec) принимают относительный путь к каталогу или диску:

GetAbsolutePathName(parthspec) – Возвращает полный путь.

Допустим, мы запускаем наш сценарий из папки D:WorkMy_Script. Давайте посмотрим, что вернёт метод при разных переданных значениях.

  • Параметр pathspec – Возвращаемое значение
  • «d:» — «d:workMy_Script»
  • «d:..» — «d:work»
  • «d:\» — «d:»
  • «d:*.*folder_1» — «d:workMy_Script*.*folder_1»
  • «folder_2» — «d:workMy_Scriptfolder_2»
  • «d:….work» — «d:work»

GetParentFolderName(parthspec) – Возвращает путь к родительскому каталогу. Если переданный параметр не содержит родительского каталога (мы передали имя диска), то метод вернёт пустую строку.

GetDriveName(parthspec) – Возвращает имя диска. Если не удастся определить имя диска, то метод вернёт пустую строку.

Следующий метод показывает, как переместить файл или несколько файлов.

MoveFile(source, destination) – Как видим, нам нужно передать два параметра, первый параметр содержит строку, которая хранит полный путь к файлу, который надо переместить. Мы можем использовать подстановочные знаки, например, "?" – любой один символ или "*" – любое количество символов. Используя подстановочные знаки, мы можем переместить сразу нескольких файлов. Второй параметр destination также содержит путь к каталогу, в который нужно переместить файлы.

Как видим, ничего сложного нет, теперь приступим к программированию, сначала напишем сценарий на языке vbscript, после него я дам пояснения, а уже потом рассмотрим аналогичный скрипт, но уже на языке jscript.

'***********************************************************************************' Объект FileSystemObject' Методы GetAbsolutePathName, GetParentFolderName и GetDriveName' Создание новой и перемещение в нее файлов' MoveFile.vbs'************************************************************************************ OptionExplicit dim WshShell, cur_dir, FSO, new_folder, i, list set WshShell = CreateObject("WScript.Shell")                                ' формируем ссылку на объект Shellset FSO=CreateObject ("Scripting.FileSystemObject")                    ' формируем ссылку на объект FileSystemObject' создаем новую папку и в текущем каталогеset new_folder=FSO.CreateFolder("Новый каталог_vbs")            ' переменная содержит путь к текущему каталогуcur_dir = WshShell.CurrentDirectory                         ' создаем девять пустых текстовых файловfor i=1 to 9     FSO.CreateTextFile(i & "_новый файл.txt")next WScript.Echo "Проверьте содержимое каталога " & vbCRLf & cur_dir                                                                                                                                                                                                                                                                                                                    'как переместить файлWScript.Echo "Сейчас произойдет перемещение файлов" ' производим перемещение всех файлов в заданный каталогFSO.MoveFile cur_dir & "?_новый файл.txt", new_folder list = FSO.GetAbsolutePathName(cur_dir) & vbCrLflist = list & FSO.GetParentFolderName(cur_dir) & vbCrLflist = list & FSO.GetDriveName(cur_dir) WScript.Echo "Процесс перемещения завершен" & vbCrLf & vbCrLf & list

В данном примере, мы получаем полный путь к текущему каталогу, с помощью объекта Wscript.Shell и его свойства CurrentDirectory. Далее происходит создание новой папки с именем "Новый каталог_vbs" в текущем каталоге с помощью метода CreateFolder. Я не включал проверку на существование создаваемого каталога, поэтому, программный код выдаст ошибку, если создаваемый каталог уже существует. Далее с помощью цикла в текущей папке создается девять пустых текстовых файлов. После, перед вами появятся два информационных сообщения, закрыв их, вы увидите, как переместились созданный файлы из текущей папки в папку с именем «Новый каталог_vbs«. В конце, снова появится информационное сообщение, которое будет содержать информацию об успешном перемещении файлов, файловая система Windows, так же мы получим значения, которые вернут методы GetAbsolutePathName, GetParentFolderName и GetDriveName объекта FileSystemObject.

Как переместить файл в файловой системе Windows

Мы рассмотрели, как переместить файл, точнее группу файлов программным путём с помощью языка программирования vbscript. Теперь посмотрим на аналогичный пример, но уже на языке jscript.

//***********************************************************************************// Объект FileSystemObject// Методы GetAbsolutePathName, GetParentFolderName и GetDriveName// Создание новой и перемещение в нее файлов// MoveFile.js//************************************************************************************ var WshShell, cur_dir, FSO, new_folder, i, list; WshShell = WScript.CreateObject("WScript.Shell");                                // формируем ссылку на объект ShellFSO=WScript.CreateObject("Scripting.FileSystemObject");                    // формируем ссылку на объект FileSystemObject// создаем новую папку и в текущем каталогеnew_folder=FSO.CreateFolder("Новый каталог_js");// переменная содержит путь к текущему каталогуcur_dir = WshShell.CurrentDirectory; // создаем девять пустых текстовых файловfor(i=1; i<=9; i++){     FSO.CreateTextFile(i +"_новый файл js.txt");} WScript.Echo("Проверьте содержимое каталога "+ cur_dir);                                                                                                                                                                                                            //как переместить файлWScript.Echo("Сейчас произойдет перемещение файлов"); // производим перемещение всех файлов в заданный каталогFSO.MoveFile(cur_dir +"\?_новый файл js.txt", new_folder); list = FSO.GetAbsolutePathName(cur_dir)+"n";list += FSO.GetParentFolderName(cur_dir)+"n";list += FSO.GetDriveName(cur_dir); WScript.Echo("Процесс перемещения завершенnn"+ list);

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

Я всегда стараюсь при возможности приводить примеры на обоих языках, так как это позволяет произвести анализ кода и сделать сравнение. Так, мне нужна буквально минута, что бы перевести код языка vbscript на код языка jscript.

Как переместить файлы в системе Windows

Ну что же, в этой статье мы рассмотрели методы объекта FileSystemObject – MoveFile, GetAbsolutePathName, GetParentFolderName и GetDriveName, которые показывают, как переместить файл или группу файлов из одного места в другое, а также — как получить абсолютный путь или имя диска.

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