Андрей Попов - Windows Script Host для Windows 2000/XP
/* Язык: JScript                                                  */
/* Описание: Запуск дочернего консольного приложения              */
/*******************************************************************/
//Объявляем переменные
var ObjExec,WshShell,s,IsBreak,ArrS,ColStr,ColFiles,i;
//Создаем объект 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="Список всех специальных папок:nn";
//Перебираем все элементы коллекции WshFldrs
for (i=0;i<= WshFldrs.Count()-1;i++) {
 //Формируем строки с путями к специальным папкам
В s+=WshFldrs(i)+"n";
}
WScript.Echo(s);
/************* Конец *********************************************/
Листинr 2.39. Формирование списка всех специальных папок (VBScript)'*****************************************************************
' РРјСЏ: SpecFold1.vbs
' Язык: VBScript
' Описание: Вывод названий всех специальных папок Windows
'*****************************************************************
Option Explicit
Dim WshShell, WshFldrs, SpecFldr, s ' Объявляем переменные
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("Wscript.Shell")
' Создаем объект WshSpecialFolders
Set WshFldrs = WshShell.SpecialFolders
s="Список всех специальных папок:" & vbCrLf & vbCrLf
' Перебираем все элементы коллекции WshFldrs
For Each SpecFldr In WshFldrs
 ' Формируем строки с путями к специальным папкам
В s=s & SpecFldr & vbCrLf
Next
WScript.Echo s
'************* Конец *********************************************/
Объект WshSpecialFolders также позволяет получить путь к конкретно заданной специальной папке. Например, в сценарии SpecFold2.js (листинг 2.40) на экран выводятся пути к папкам рабочего стола (Desktop), избранных ссылок (Favorites) и раздела Программы (Programs) меню Пуск (Run) — рис. 2.16.
Рис. 2.16. Пути для некоторых специальных папок
Листинг 2.40. Доступ к определенным специальным папкам (JScript)
/******************************************************************/
/* РРјСЏ: SpecFold2.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */