WSH. Примеры. Операции с папками.
Некоторые из приводимых здесь примеров уже присутствую в разделе Объект FileSystemObject. Однако в справочных целях для работы с папками, как мне кажется, пользоваться этой страницей удобнее так как группировка материала имеет сугубо практической характер. Однако в примерах могут не рассматриваться различные параметры объектов.
- Проверка наличия папки
- Путь к специальным папкам
- Создать папку
- Удалить папку
- Список подпапок (подкаталогов)
- Вывод имен всех подпапок (рекурсивно)
- Удаление всех пустых подпапок (рекурсивно)
- Копировать папку
- Переместить папку
- Получение сведений о папке
- Родительский каталог
- Список файлов в папке
- >Изменить атрибуты папки
- Выбор папки через проводник
Проверка наличия папки
function ReportFolderStatus(fldr)
{
var fso, s = fldr;
fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FolderExists(fldr))
s += " exists.";
else
s += " doesn't exist.";
return(s);
}
Путь к специальным папкам
Возможно получить путь к следующим папкам: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates.
var f1 = WScript.CreateObject("WScript.Shell");
var f3 = f1.SpecialFolders("AllUsersDesktop");
WScript.Echo(f3);
Создать папку
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateFolder("c:\\new folder");
Если такой каталог уже существует, произойдёт ошибка.
Удалить папку
function DeleteFolder(folderspec)
{
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFolder(folderspec);
}
Список подпапок (подкаталогов)
function ShowFolderList(folderspec)
{
var fso, f, fc, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFolder(folderspec);
fc = new Enumerator(f.SubFolders);
s = "";
for (; !fc.atEnd(); fc.moveNext())
{
s += fc.item();
s += "\n";
}
return(s);
}
Если исходный каталог не существует, произойдёт ошибка.
Вывод имен всех подпапок (рекурсивно)
Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubFolders FSO.GetFolder("C:\temp")
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
Wscript.Echo Subfolder.Name
ShowSubFolders Subfolder
Next
End Sub
Удаление всех пустых подпапок (рекурсивно
Set fso = CreateObject("Scripting.FileSystemObject")
startFolder = "D:\temp\"
DeleteEmptyDir startFolder
Function DeleteEmptyDir(folderName)
Dim folder, folderCollection, subFolder
Set folder = fso.GetFolder(folderName)
Set folderCollection = folder.SubFolders
For Each subFolder In folderCollection
DeleteEmptyDir subFolder.Path
If subFolder.Size = 0 Then subFolder.Delete True
Next
End Function
Копировать папку
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder ("c:\\mydocuments\\letters\\*", "c:\\tempfolder\\")
Переместить папку
function MoveFldr2Desktop(fldrspec)
{
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.MoveFolder(fldrspec, "c:\\windows\\desktop\\");
}
Процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый каталог уже существует или является файлом, возникнет ошибка.
Получение сведений о папке
Дата создания папки.
function ShowFileInfo(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = "Created: " + f.DateCreated;
return(s);
}
Дата последнего доступа к папке.
function ShowFileLastAccessed(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = filespec.toUpperCase() + "\n";
s += "Last Accessed: " + f.DateLastAccessed;
return(s);
}
Дата последней модификации папки.
function ShowFileLastModified(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = filespec.toUpperCase() + "\n";
s += "Last Modified: " + f.DateLastModified;
return(s);
}
function ShowFolderAccessInfo(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = f.Path.toUpperCase() + "\n";
s += "Created: " + f.DateCreated + "\n";
s += "Last Accessed: " + f.DateLastAccessed + "\n";
s += "Last Modified: " + f.DateLastModified
return(s);
}
Родительский каталог
function ShowParentFolder(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = f.Name + " in " + f.ParentFolder;
return(s);
}
Список файлов в папке
var fso, f, f1, fc, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFolder("c:");
fc = new Enumerator(f.files);
s = "";
for (; !fc.atEnd(); fc.moveNext())
{
s += fc.item();
s += "\n";
}
WScript.Echo(s);
Изменить атрибуты папки
function ToggleArchiveBit(filespec)
{
var fso, f, r, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec)
if (f.attributes && 32)
{
f.attributes = f.attributes - 32;
s = "Archive bit is cleared.";
}
else
{
f.attributes = f.attributes + 32;
s = "Archive bit is set.";
}
return(s);
}
Выбор папки через проводник
function fnShellBrowseForFolderJ()
{
var objShell = new ActiveXObject("shell.application");
var objFolder;
objFolder = objShell.BrowseForFolder(0, "Выберите каталог", 0);
if (objFolder != null) return (objFolder.Self.Path); else return ("");
}
WScript.Echo(fnShellBrowseForFolderJ());
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуетс¤ регистраци¤).