Выбрать главу

//Создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

//Запускаем команду DIR

ObjExec=WshShell.Exec("%COMSPEC% /c dir /b");

s="";

IsBreak=false;

for (;;) {  //Бесконечный цикл

 //Проверяем, достигнут ли конец выходного потока команды DIR

 if (!ObjExec.StdOut.AtEndOfStream)

  //Считываем полностью выходной поток команды DIR

  s+=ObjExec.StdOut.ReadAll();

 if (IsBreak) break; //Выходим из цикла

 if (ObjExec.Status==1)  //Проверяем, не завершилось ли выполнение DIR

  IsBreak=true;

 else WScript.Sleep(100);  //Приостанавливаем сценарий на 0,1 сек

}

ArrS=s.split("\n");  //Формируем массив строк

ColFiles=ArrS.length-1;   // Количество файлов в текущем каталоге

WScript.StdOut.WriteLine("Всего файлов в текущем каталоге: "+ColFiles);

for (i=0;i<=ColFiles-1;i++)

 WScript.StdOut.WriteLine(ArrS[i]); //Выводим строки на экран

/*************  Конец *********************************************/

Аналогичный сценарий на языке VBScript приведен в листинге 2.37.

Листинг 2.37. Запуск дочернего консольного приложения (VBScript)

'*******************************************************************

' Имя: ExecConApp.vbs

' Язык: VbScript

' Описание: Запуск дочернего консольного приложения

'*******************************************************************

Option Explicit

' Объявляем переменные

Dim ObjExec,WshShell,s,IsBreak,ArrS,ColStr,ColFiles,i

' Создаем объект WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

' Запускаем команду DIR

Set ObjExec=WshShell.Exec("%COMSPEC% /c dir /b")

s=""

IsBreak=False

Do While True  ' Бесконечный цикл

 ' Проверяем, достигнут ли конец выходного потока команды DIR

 If (Not ObjExec.StdOut.AtEndOfStream) Then

  ' Считываем полностью выходной поток команды DIR

  s=s+ObjExec.StdOut.ReadAll

 End If

 If IsBreak Then

  Exit Do  ' Выходим из цикла

 End If

 ' Проверяем, не завершилось ли выполнение DIR

 If ObjExec.Status=1 Then

  IsBreak=True

 Else

  WScript.Sleep 100 ' Приостанавливаем сценарий на 0,1 сек

 End If

Loop

ArrS=Split(s,vbCrLf)  ' Формируем массив строк

ColFiles=UBound(ArrS)  ' Количество файлов в текущем каталоге

WScript.StdOut.WriteLine "Всего файлов в текущем каталоге: " & ColFiles

For i=0 To ColFiles-1

 WScript.StdOut.WriteLine ArrS(i)  ' Выводим строки на экран

Next

'*************  Конец *********************************************

Доступ к специальным папкам Windows ХР

При установке Windows всегда автоматически создаются несколько специальных папок (например, папка для рабочего стола (Desktop) или папка для меню Пуск (Start)), путь к которым впоследствии может быть тем или иным способом изменен. С помощью свойства SpecialFolders объекта WshShell можно создать объект WshSpecialFolders, который является коллекцией, содержащей пути ко всем специальным папкам, имеющимся в системе (список названий этих папок приведен в главе 1 при описании объекта WshSpecialFolders).

В листингах 2.38 и 2.39 приводятся сценарии на языках JScript и VBScript соответственно, которые формируют список всех имеющихся в системе специальных папок (рис. 2.15).

Рис. 2.15. Пути для всех специальных папок в Windows ХР

Листинг 2.38. Формирование списка всех специальных папок (JScript)

/******************************************************************/

/* Имя: SpecFold1.js                                              */

/* Язык: JScript                                                  */

/* Описание: Вывод названий всех специальных папок Windows        */

/******************************************************************/

var WshShell, WshFldrs, i, s;  //Объявляем переменные

//Создаем объект WshShell

WshShell = WScript.CreateObject("Wscript.Shell");

//Создаем объект WshSpecialFolders

WshFldrs = WshShell.SpecialFolders;

s="Список всех специальных папок:\n\n";

//Перебираем все элементы коллекции WshFldrs

for (i=0;i<= WshFldrs.Count()-1;i++) {

 //Формируем строки с путями к специальным папкам

 s+=WshFldrs(i)+"\n";

}

WScript.Echo(s);

/*************  Конец *********************************************/

Листинr 2.39. Формирование списка всех специальных папок (VBScript)

'*****************************************************************

' Имя: SpecFold1.vbs

' Язык: VBScript

' Описание: Вывод названий всех специальных папок Windows