Как изменить выполнение cscript.exe на wscript.exe для всех файлов VBScript?

Edit: I now advise caution with the recommendations I give below. After continuing to toggle and test my settings, I find I am unable to re-establish cscript as my default script host. ( Note that I also retried the procedures given by other answers to this question.)

In addition, I tried using Process Monitor (a.k.a., “ProcMon”) to find the reason for my difficulties, but unfortunately have not been unsuccessful.

Finally, I also considered going back to an earlier Windows 7 restore point, but this was complicated by the fact that I just yesterday changed my domain password. So, for now, I’m going to have to put my investigation to rest as other tasks are pressing.

ftype VBSFile=”%%SystemRoot%%System32WScript.exe” “%%1” %%*

Свойства
объекта WScript позволяют получить полный
путь к использующемуся серверу сценариев
(wscript.exe или cscript.exe), параметры командной
строки, с которыми запущен сценарий,
режим его работы (интерактивный или
пакетный). Кроме этого, с помощью свойств
объекта WScript можно выводить информацию
в стандартный выходной поток и читать
данные из стандартного входного потока.
Также WScript предоставляет методы для
работы внутри сценария с объектами
автоматизации и вывода информации на
экран (в текстовом режиме) или в окно
Windows.

Отметим,
что в сценарии WSH объект WScript можно
использовать сразу, без какого-либо
предварительного описания или создания,
так как его экземпляр создается сервером
сценариев автоматически. Для использования
же всех остальных объектов нужно
использовать либо метод CreateObject, либо
определенное свойство другого объекта.

Свойства
объекта WScript представлены в табл.
5.1.

Таблица 5.1. Свойства объекта WScript

Предоставляет интерфейс Idispatch для
объекта WScript

Содержит указатель на коллекцию
WshArguments, содержащую параметры командной
строки для исполняемого сценария

Содержит полный путь к исполняемому
файлу сервера сценариев (в Windows XP обычно
это C:WINDOWSSYSTEM32CSCRIPT. EXE или
C:WINDOWSSYSTEM32WSCRIPT. EXE)

Содержит название
объекта Wscript (Windows Script
Host)

Содержит путь к каталогу, в котором
находится cscript.exe или wscript.exe (в Windows XP
обычно это C:WINDOWSSYSTEM32)

Содержит полный путь к запущенному
сценарию

Содержит имя запущенного сценария

Позволяет запущенному сценарию записывать
сообщения в стандартный поток для ошибок

Позволяет запущенному сценарию читать
информацию из стандартного входного
потока

Позволяет запущенному сценарию записывать
информацию в стандартный выходной поток

Содержит версию WSH

Опишем
более подробно некоторые свойства
объекта WScript.

Обработка аргументов

WshArguments содержит коллекцию всех параметров командной строки запущенного сценария или ярлыка Windows.
С помощью объекта WshArguments можно также выделять и отдельно обрабатывать аргументы сценария, у которых имеются имена
и к так называемым безымянным аргументам.

Для доступа к именным и безымянным аргументам используются соответственно два специальных свойства объекта
WshArguments: Named и Unnamed.
Свойство Named содержит ссылку на коллекцию WshNamed, свойство Unnamed — на коллекцию WshUnnamed.

Таким образом, обрабатывать параметры командной строки запущенного сценария можно
фактически четырьмя способами:

Рассмотрим каждый способ подробнее.
Способ первый – обработать все параметры, переданные скрипту.

Здесь, как мне кажется, все достаточно понятно.
В качестве упражнения можете создать файл с содержанием вышеприведенного примера, сохранить его
с расширением JS, и запустить на обработку с несколькими аргументами.
Аргументы разделяются пробелом. Если значение параметра должно содержать пробел, то его следует заключить в кавычки.

Второй способ – разбор только именных ( или именованных ) аргументов.

Объект WshNamed содержит коллекцию параметров командной строки запущенного сценария,
у которых имеется уникальное имя (именные параметры).
В WSH именной параметр всегда начинается с символа “/”,
после чего приводится имя этого параметра, затем ставится двоеточие “:” и пишется значение параметра, например:

В качестве значения именного параметра рассматривается набор символов,
начинающихся после двоеточия и заканчивающихся перед первым встретившимся пробелом.
Для того чтобы значением параметра командной строки была строка, содержащая пробел (пробелы),
необходимо заключить эту строку в кавычки. Например:.

Создается объект WshNamed с помощью свойства Named коллекции WshArguments.
Для того чтобы получить значение определенного аргумента, его имя используется в качестве индекса коллекции.

Узнать число именных параметров можно только с помощью свойства Length коллекции WshNamed,
метода Count у этой коллекции нет.

Пример разбора именованных аргументов.

Для того чтобы узнать, был ли указан при запуске сценария тот или иной именной параметр,
используется метод Exists объекта WshNamed. Например,

И третий способ – разбор только безымянных аргументов.
В коллекции WshUnnamed содержатся параметры командной строки запущенного сценария,
у которых нет имени (безымянные параметры).
Создается этот объект с помощью свойства Unnamed коллекции WshArguments.
Для того чтобы получить значение определенного аргумента,
его номер используется в качестве индекса коллекции (нумерация начинается с нуля).

Узнать число безымянных параметров можно только с помощью свойства Length.

Или обработать все безымянные аргументы

Обрабатывать элементы коллекции WshArguments можно (хоть и менее удобно) стандартным
образом как коллекцию. Для JScript, например, – создать
объект Enumerator и использовать его методы.

Возможно вы обратили внимание, что синтаксис части аргументов некоторых команд
соответствует синтаксису именованных аргументов. Например, такая часто используемая команда
как net use. Вспомним некоторые из ее аргументов:

Так что такой синтаксис не должен выглядеть как нечто необычное.

При использовании именованных аргументов не имеет значения порядок их следования.
Это с одной стороны упрощает использование скрипта, так как нет необходимости запоминать
в каком порядке следует передавать аргументы.
С другой стороны кроме значение необходимо передавать и имя аргумента,
что может вызвать протест в тонкой душе лентяя.
Поэтому я не стану давать общих рекомендаций о предпочтительности того
или иного способа передачи аргументов.

:/>  Что делать, если Windows 10 не загружается и что делать, если при загрузке образа Windows 10 и 11 появляется ошибка «С вашим запросом возникла проблема»

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать
раздел форума
этого сайта (требуетс¤ регистраци¤).

Объект WScript

Тут совсем просто)).
Объект WScript можно использовать в сценарии сразу, без его создания,
т.к. его экземпляр создаётся сервером сценариев
(CScript.exe или WScript.exe) автоматически.

Объект WScript. Свойство Timeout.

Время в секундах, по истечении которого скрипт будет автоматически остановлен.
Замечание: чтение и запись.
Следует отметить, что при запуске сценариев из командной строки есть параметр //T
который ограничивает максимальное время работы скрипта.
Подробнее о параметрах запуска скриптов смотрите здесь.

WScript. Timeout = 5

Если время исполнения скрипта превысит 5 секунд, он будет завершен.

Объект WScript. Свойство Name.

Наименование сервера сценариев.

MsgBox “Name=” & WScript. Name

В моем случае результат был Windows Script Host.

Объект WScript. Свойство FullName.

Полный путь к исполняемому файлу сервера сценариев.

MsgBox “FullName=” & WScript. FullName

В моем случае результат был c:windowssystem32WScript.exe

Объект WScript. Свойство Path.

Полный путь к каталогу исполняемого файла сервера сценариев.

MsgBox “Path=” & WScript. Path

Объект WScript. Свойство Version.

Версия сервера сценариев.
Замечание: только чтение.

MsgBox “Version=” & WScript. Version

Объект WScript. Свойство BuildVersion.

Номер сборки сервера сценариев.
Замечание: только чтение.

MsgBox “BuildVersion=” & WScript. BuildVersion

Объект WScript. Свойство ScriptName.

Имя запущенного файла скрипта.
Замечание: только чтение.

MsgBox “ScriptName=” & WScript. ScriptName

Объект WScript. Свойство ScriptFullName.

Полный путь и имя запущенного файла скрипта.
Замечание: только чтение.

MsgBox “ScriptFullName=” & WScript. ScriptFullName

Объект WScript. Свойство StdIn.

Возвращает объект “TextStream”, соответствующий стандартному входному потоку.
Замечание: свойство доступно только если скрипт был запущен с помощью CScript.exe.

WScript. StdOut. Write “Input: ”
s = WScript. StdIn. ReadLine
MsgBox s

Объект WScript. Свойство StdOut.

Возвращает объект “TextStream”, соответствующий стандартному выходному потоку.
Замечание: свойство доступно только если скрипт был запущен с помощью CScript.exe.

Объект WScript. Свойство StdErr.

Возвращает объект “TextStream”, соответствующий стандартному потоку ошибок.
Замечание: свойство доступно только если скрипт был запущен с помощью CScript.exe.

WScript. StdErr. Write “Hello, StdErr!”

В командном окне (cmd) введите CScript.exe tst2.vbs
где tst2.vbs – имя, под которым сохранили предыдущий пример.
Стандартный поток ошибок будет выведен на экран, где вы и увидите сообщение.

Объект WScript. Свойство Arguments.

Возвращает объект “WshArguments”, который имеет ряд свойств и методов,
позволяющих обращаться к именным и безымянным параметрам.
Более подробно работа с параметрами описана здесь.

Объект WScript. Свойство Interactive.

Режим запуска скрипта – запрещён (False) или разрешён (True) диалог с пользователем.
Это свойство позволяет определять в каком режиме был запущен скрипт
( //B – Пакетный режим или //I – Диалоговый режим.
Подробнее о параметрах запуска скриптов смотрите здесь).
Свойство позволяет так же переопределить этот режим.
Замечание: чтение и запись.

WScript. Interactive = False

Объект WScript. метод Sleep.

Приостановка исполнения скрипта на указанное количество миллисекунд.

MsgBox Start
WScript. Sleep 1000
MsgBox After Sleep 1000

Объект WScript. метод Quit.

Завершение исполнения скрипта с указанным кодом возврата.
Параметры: ErrorCode – необязательный, число, код возврата приложения.

Объект WScript. метод Echo.

Вывод сообщения в окно MessageBox (если скрипт был запущен с помощью WScript.exe)
или на консоль (если скрипт был запущен с помощью CScript.exe).
Если аргументы не заданы, будет выведена пустая строка.
Перечисленные через запятую аргументы при выводе будут разделены пробелами.
В случае использования CScript.exe вывод будет завершён символом новой строки

Объект WScript. метод CreateObject.

Set WshNetwork = WScript. CreateObject(“WScript. Network”)

Объект WScript. метод ConnectObject.

Разрывает соединение с объектом автоматизации (созданное ранее для обработки его событий).
Синтаксис: DisconnectObject(Obj)
где Obj – объект.

Объект WScript. Объект WshArguments.

Как уже упоминалось, свойство Arguments
возвращает объект WshArguments. Настало время рассмотреть этот объект.
Сразу хотелось бы отметить, что практическая сторона вопроса – работа с объектом
рассмотрена на другой странице этого проекта –
WSH. Обработка аргументов.

Объект WshArguments. Создание объекта.

Объект WshArguments создается свойством Arguments.

Set WshArg = WScript. Arguments

Объект WScript. Свойство Item.

Синтаксис: Item(Index)
где Index – номер элемента в коллекции.
Возвращаемое значение – элемент коллекции.
Только чтение.

Объект WScript. Свойство Length.

Синтаксис: LengthПараметров нет.
Возвращаемое значение – число элементов коллекции
(количество аргументов, переданных скрипту).
Только чтение.

Объект WScript. Свойство Named.

Синтаксис: NamedПараметров нет.
Возвращаемое значение – коллекция именных (именованных) параметров, переданных скрипту).
Только чтение.

Объект WScript. Свойство Unnamed.

Синтаксис: LengthПараметров нет.
Возвращаемое значение – коллекция безымянных (не именованных) параметров, переданных скрипту).
Только чтение.

Объект WScript. Метод Count.

Синтаксис: CountПараметров нет.
Возвращает число элементов коллекции (количество аргументов, переданных скрипту).
Только чтение.

Объект WScript. Метод ShowUsage.

Еще раз напоминаю, что примеры работы с аргументами рассмотрены на другой странице этого проекта –
WSH. Обработка аргументов.

За более подробной информацией обращайтесь в MSDN.
На момент написания страницы это было
здесь.

I’ll break this down in to several distinct parts, as each part can be done individually. (Я вижу аналогичный ответ, но здесь я дам более подробное объяснение.)

:/>  Свободное место на диске через cmd

Используя это, вы затем набираете «ftype VBSFile», что должно привести к ответу:

Если эти два уже определены, как указано выше, ваша Windows уже настроена, чтобы знать, как запускать файл *.vbs. (Кстати, WScript и CScript — это одна и та же программа, использующая разные имена. W Script запускает сценарий, как если бы это была программа с графическим интерфейсом, а CScript запускает его, как если бы это была программа командной строки. См. другие сайты и/или документацию по этим подробности и предостережения.)

Если какая-либо из команд не ответила, как указано выше (или аналогичные ответы, если тип файла, указанный assoc, и/или команда, выполненная как указанная ftype, имеют разные имена или местоположения), вы можете ввести их самостоятельно:

Вы также можете ввести «help assoc» или «help ftype» для получения дополнительной информации об этих командах, которые часто бывают удобны, когда вы хотите автоматически запускать определенные программы, просто вводя имя файла с определенным расширением. (Однако будьте осторожны, так как некоторые расширения файлов специально настраиваются Windows или программами, которые вы могли установить, чтобы они работали правильно. Всегда проверяйте текущие назначенные значения, сообщаемые assoc/ftype, и сохраняйте их где-нибудь в текстовом файле на случай, если вам понадобится восстановить их.)

Вторая часть, избегание ввода расширения файла при вводе команды из окна консоли. Понимание того, как Windows (и программа CMD.EXE) находит вводимые вами команды, полезно для этой (и следующей) части. Когда вы вводите команду, давайте использовать “querty” в качестве примера команды, система сначала попытается найти команду в своем внутреннем списке команд (через настройки в реестре Windows для самой системы или запрограммированные в случае CMD.EXE). Поскольку такой команды нет, он попытается найти команду в текущей переменной окружения %PATH%. В старых версиях DOS/Windows CMD. EXE (и/или COMMAND. COM) автоматически добавит расширения файлов «.bat», «.exe», «.com» и, возможно, «.cmd» к введенному вами имени команды, если только вы явно не ввели расширение (например, как «querty.bat», чтобы избежать ошибочного запуска «querty.exe»). В более современных Windows он попытается использовать расширения, перечисленные в переменной окружения %PATHEXT%. Так что все, что вам нужно сделать, это добавить .vbs в %PATHEXT%. Например, вот мой %PATHEXT%:

Обратите внимание, что расширения ДОЛЖНЫ включать «.», разделены «;», и что . VBS указан ПОСЛЕ . CMD, но ДО . COM. Это означает, что если командный процессор (CMD.EXE) найдет более одного совпадения, он будет использовать первое из перечисленных. То есть, если у меня есть query.cmd, querty.vbs и querty.com, он будет использовать querty.cmd.

Теперь, если вы хотите делать это постоянно, не сохраняя настройку %PATHEXT%, вам придется изменить системную среду. Ввод его в окне консоли изменяет его только для этого сеанса окна консоли. Я оставлю этот процесс в качестве упражнения для читателя. :-П

Третья часть, запуск скрипта без ввода полного пути. Эта часть, по отношению ко второй части, существует еще со времен DOS. Просто убедитесь, что файл находится в одном из каталогов (папки, для вас, народ Windows!), перечисленных в переменной окружения %PATH%. Я предлагаю создать свой собственный каталог для хранения различных файлов и программ, которые вы создаете или часто используете из окна консоли/командной строки (то есть не беспокойтесь об этом для программ, которые вы запускаете из меню «Пуск» или любым другим способом. только окно консоли. Не связывайтесь с программами, которые устанавливаются Windows или автоматическим установщиком, если вы не знаете, что делаете).

Объединение всех трех частей приведет к настройке вашей системы Windows таким образом, что везде, где вы можете ввести команду командной строки, вы сможете запустить свой VBScript, просто набрав его базовое имя файла. Вы можете сделать то же самое практически для любого типа файла/расширения; Как вы, вероятно, видели в моем выводе %PATHEXT%, моя система также настроена на запуск сценариев Perl (.PLX;.PLW;.PL) и Python (.PY). (Я также поместил «C:sys at;C:sysscripts;C:syswsh;C:sys in» в начале моего %PATH% и поместил различные пакетные файлы, файлы сценариев и т. д. в эти каталоги, чтобы Windows всегда могла их найти.Это также удобно, если вы хотите «переопределить» некоторые команды: размещение файлов *.bat первым в пути заставляет систему находить их перед файлами *.exe, например, а затем * Файл .bat может запускать настоящую программу, указав полный путь к фактическому файлу *.exe.Посетите различные сайты по «программированию пакетных файлов» для получения подробной информации и других примеров мощности командной строки.Он не умер еще!)

Последнее замечание: НЕОБХОДИМО проверить некоторые другие сайты на наличие различных предупреждений и предостережений. This question posed a script named “converter.vbs”, which is dangerously close to the command “convert.exe”, which is a Windows program to convert your hard drive from a FAT file system to a NTFS file system. Something that can clobber your hard drive if you make a typing mistake!

On the other hand, using the above techniques you can insulate yourself from such mistakes, too. Using CONVERT. EXE as an example. Rename it to something like “REAL_CONVERT. EXE”, then create a file like “C:sysatconvert.bat” which contains:

Here’s some links to some good resources on how to use all this power:

:/>  Как вставить текст комбинация клавиш

Most of these sites are geared towards batch files, but most of the information in them applies to running any kind of batch (* .bat) file, command (* .cmd) file, and scripting (* .vbs, * .js, * .pl, * .py, and so on) files.


Описание: Работа с аргументами запущенного
сценария

Set
objArgs = WScript. Arguments ‘ Создаем
объект
WshArguments

For
Each Arg In objArgs

‘*************
Конец *********************************************

Листинг 5.1. Вывод всех параметров
командной строки сценария (VBScript)

WScript. Arguments

Return command-line parameters.

Syntax
WScript. Arguments

WScript. Arguments(n)

WScript. Arguments.item(n)

n = Return the single argument n
counting from 0

To pass named arguments use:

In addition to the argument itself : you can also retrieve a count or length:
MyObject
MyObject

The default property is

Examples

HowTo: Arguments – Command Line arguments.
. Shortcut. Arguments.
Equivalent Windows CMD command: Parameters – Command Line Parameters.

If name. Exists(“a”) Then ‘если существует параметр “a” объекта name, то

msgbox
name(“a”)
‘вывести значение параметра “a”

Else
msgbox “Параметр не введен”
‘иначе вывести сообщение об его
отсутствии

Для доступа к значениям безымянных
параметров используются их номера.
Нумерация начинается с нуля:

Узнать количество безымянных параметров
можно с помощью свойства Length:

If
name.length=1
Then ‘ проверка, введен ли
в командную строку один параметр

msgbox
name.item(0) ‘
вывод значения параметра, возможна
запись name(0)

Else
msgbox “количество
параметров не соответствует задаче”

Свойства StdErr, StdIn, StdOut

Доступ
к стандартным входным и выходным потокам
с помощью свойств StdIn, StdOut и StdErr можно
получить только в том случае, если
сценарий запускался в консольном режиме
с помощью cscript.exe. Если сценарий был
запущен с помощью wscript.exe, то при попытке
обратиться к этим свойствам возникнет
ошибка “Invalid Handle”.

Работать
с потоками StdOut и StdErr можно с помощью
методов Write, WriteLine, WriteBlankLines, а с потоком
StdIn — с помощью методов Read, ReadLine, ReadAll,
Skip, SkipLine. Эти методы кратко описаны в
табл. 5.2.

Таблица 5.2. Методы для работы с потоками

Named arguments

A named argument begins with a slash (), and the name and the value are separated by a colon () those values can then be picked up within the script by reading the collection WScript. Arguments. Named

Named arguments can be given in any order

cscript.exe demo2.vbs /price:500

Named arguments are optional, so you can include a default:

If . Exists(“”) Then
= . Item(“”)
Else
= “January”
End If

To count the number of arguments:

“Art, in itself, is an attempt to bring order out of chaos” ~ Stephen Sondheim

Arguments – Command line arguments.
Variables – Define VBScript constants and variables.
Windows 2000 Scripting Guide – Technet.

Positional arguments

Calling a script with unnamed arguments is a simple method of passing values into a VBScript, those values can then be picked up within the script by reading the properties of WScript. Arguments

cscript.exe demo.vbs December 500

This can be extended to cope with a large number of arguments but every time the script is called all of the arguments must be present and passed in the same order. If any are missed out then the numbers will change becomes etc.

The Unnamed property will return a collection of the positional arguments, presented in the order that they were entered on the command line.

Passing an argument that starts with “//” to a VBscript, will by default be taken as options for the windows script host itself (cscript or wscript). To avoid this pass a double slash “//” to end the argument parsing of cscript/wscript. Alternatively use a named argument as below.

Vbscript Sample. Vbs /возраст

Значения переменных имя и возраст можно
передать как безымянные параметры (в
этом случае важен порядок следования
аргументов).

Для работы с аргументами командной
строки, в сценарии сначала нужно создать
переменные, являющиеся объектами
WshArguments, для чего используется
свойство Arguments объекта
Wscript:

Set
objArgs=WScript. Arguments
‘создается переменная objArgs.

Параметры могут быть именные и безымянные.

Именные задаются с помощью объекта
WshNamed, безымянные с помощью
WshUnnamed:

Set name=objargs. Unnamed
‘создается безымянный
параметр name

Set name=objargs. Named
‘создается именной параметр name

При использовании именных параметров
в вызове сценария следует указывать
имя параметра и через двоеточие его
значение, например:

Если параметр безымянный, то указывается
только значение, например

При работе с параметрами необходимо
проверять существуют ли параметры, то
есть, были ли они введены в командную
строку. Например, проверим, существует
ли именной параметр “a”:

Работа с параметрами командной строки сценария

Используя аргументы командной строки,
в сценарии можно передавать различную
информацию, например переключатели,
имена пользователей и компьютеров. При
задании аргумента можно указать либо
только его значение. Либо имя вместе со
значением в формате

В имени аргумента и его значении могут
использоваться символы кириллицы.