Из тела скрипта vbs в котором есть cmd строки и я говорю не про такой вариант:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /c команда"
Вообщем vbs скрипт с расширением .vbs должен запустить всего себя же как cmd скрипт.
Возможно такое?!
Системное администрирование
Все знают что из cmd скрипта возможно запустить и vbs и js и hta к примеру, возможно ли из vbs вызвать cmd скрипт?!
Если синтаксис не запрещает, значит возможно.
Но образуется рекурсивная цепочка вызовов.
И неважно сколько при этом различных языков и функций используется.
Важно лишь то, сумеете ли вы ограничить глубину рекурсии по времени и по объему используемых ресурсов.
Нерекурсивное вычисление факториала в цикле не требует добавления ресурсов памяти и использует на каждом шаге один и тот же фрагмент памяти.
Вызов интерпретатора cmd - требует отведения нового небольшого участка памяти при каждом вызове как при вложенном вызове, так и при единственном вызове. Возвраты из вложенных вызовов cmd осуществляются по принципу первым вошёл, последним вышел.
Рекурсия, которая даже ничего не делает, требует ресурсов и поглощает всю память - авария.
Необходимо, чтобы в рекурсии участвовала какая- то функция, ограничивающая её глубину, и правильно осуществлялся возврат результатов. ..
Работа vbs-скрипта тоже может иметь подобные ограничения, но это уже неважно, потому что один только cmd накладывает принципиальные теоретические ограничения.
Интерпретатор скрипта анализирует только код строки, и не может обозреть всю программу, проверить её правильность и осмысленность, в этом можно убедиться, реализовав вашу мечту с рекурсивным вызовом.
Стоит заметить, что если будет использован алгоритм с созданием файлов, то это запросто замусорит диск, а это очень болезненно.
Что же касается вызова vbs как cmd, то вы знаете способ, как это делать, и этот способ запрограммирован в функции WshShell.Run не зря, потому что работает с единственно верным указателем на адрес загруженной функции, а не на файл в котором она хранится.
И зачем vbs-скрипт должен разбираться с чужим скриптом?
Если выполнить вашу задумку, то надо или в cmd включить всю суть vbs, либо в vbs включить всю суть cmd.
То есть написать другой интерпретатор, потому что не хочется пользоваться одной маленькой функцией WshShell.Run )))
Но образуется рекурсивная цепочка вызовов.
И неважно сколько при этом различных языков и функций используется.
Важно лишь то, сумеете ли вы ограничить глубину рекурсии по времени и по объему используемых ресурсов.
Нерекурсивное вычисление факториала в цикле не требует добавления ресурсов памяти и использует на каждом шаге один и тот же фрагмент памяти.
Вызов интерпретатора cmd - требует отведения нового небольшого участка памяти при каждом вызове как при вложенном вызове, так и при единственном вызове. Возвраты из вложенных вызовов cmd осуществляются по принципу первым вошёл, последним вышел.
Рекурсия, которая даже ничего не делает, требует ресурсов и поглощает всю память - авария.
Необходимо, чтобы в рекурсии участвовала какая- то функция, ограничивающая её глубину, и правильно осуществлялся возврат результатов. ..
Работа vbs-скрипта тоже может иметь подобные ограничения, но это уже неважно, потому что один только cmd накладывает принципиальные теоретические ограничения.
Интерпретатор скрипта анализирует только код строки, и не может обозреть всю программу, проверить её правильность и осмысленность, в этом можно убедиться, реализовав вашу мечту с рекурсивным вызовом.
Стоит заметить, что если будет использован алгоритм с созданием файлов, то это запросто замусорит диск, а это очень болезненно.
Что же касается вызова vbs как cmd, то вы знаете способ, как это делать, и этот способ запрограммирован в функции WshShell.Run не зря, потому что работает с единственно верным указателем на адрес загруженной функции, а не на файл в котором она хранится.
И зачем vbs-скрипт должен разбираться с чужим скриптом?
Если выполнить вашу задумку, то надо или в cmd включить всю суть vbs, либо в vbs включить всю суть cmd.
То есть написать другой интерпретатор, потому что не хочется пользоваться одной маленькой функцией WshShell.Run )))
Фиг знает.
.vbs скрипт может быть запущен только как .vbs скрипт. Его должен обрабатывать или WSCRIPT.EXE или CSCRIPT.EXE, - в зависимости от того, в каком виде он запускается, в графике или в консоли. А cmd.exe, в свою очередь, обрабатывает файлы .cmd, и не приемлет синтаксис .vbs-скрипта. По сути вы хотите чтобы телевизор вам пропылесосил ковёр, а пылесос транслировал телепередачи.
Поэтому если нужно запустить vbs-скрипт в консоли, то указанный вами вариант через WshShell.Run является единственным. Если нужно в графике - тогда cmd заменяем на WSCRIPT.
Поэтому если нужно запустить vbs-скрипт в консоли, то указанный вами вариант через WshShell.Run является единственным. Если нужно в графике - тогда cmd заменяем на WSCRIPT.
Anchik Axunov
Вы не правы насчет cmd/vbs и ковров пылесосов
на vbs переухитряться конечно нужно с '[SUB]
А вот на js легко такой пример вам приведу
Содержимое батника который запустит себя как js скрипт:
@set @x=0 /*
Wscript /E:jscript "%~f0"
Exit
*/
WScript.echo("Tak mojno kak vidite");
Или на vbs уже тогда:
Содержимое батника который запустит себя как vbs скрипт:
::'Cscript /E:vbs "%~f0"
msgbox "Tak mojno kak vidite"
А вот наоборот никак не выходит =( т. е что бы vbs себя вызвал как cmd
на vbs переухитряться конечно нужно с '[SUB]
А вот на js легко такой пример вам приведу
Содержимое батника который запустит себя как js скрипт:
@set @x=0 /*
Wscript /E:jscript "%~f0"
Exit
*/
WScript.echo("Tak mojno kak vidite");
Или на vbs уже тогда:
Содержимое батника который запустит себя как vbs скрипт:
::'Cscript /E:vbs "%~f0"
msgbox "Tak mojno kak vidite"
А вот наоборот никак не выходит =( т. е что бы vbs себя вызвал как cmd
Anchik Axunov
Прикол вот в чем cmd при запуске смотрит расширение фала и его как в Cscript/Wscript не выставишь =(
Cscript /E:VBS СКРИПТ. cmd
Cscript /E:VBS СКРИПТ. cmd
Anchik Axunov
Вы правы у каждого файла свой синтаксис но у меня получается взаимовыгодный синтаксис который не нарушает синтаксис софайленика )))
Похожие вопросы
- Какие скрипты vbs запускаются автоматически при загрузке Windows или некоторых программ (н-р MS Word)?
- Установка Windows производиться через CMD. Помогите доработать скрипт.
- Создание vbs-скрипта ...
- Нужен скрипт который проверял бы состояние службы и если она не запущена, запускал бы её. Спасибо.
- Нужна помощь с созданием скрипта под windows
- Мне нужна помощь с AHK скриптом!
- Кто-нибудь может выручить скриптом для Excel?
- Как запустить с помощью команды Windows 10 (cmd, bat), графический интерфейс?
- Как через cmd узнать об установленном\отсутствующем google chrome ?
- А им точно seo специалист нужен? Зачем сеошнику знания js, html, php, mysql, coralldraw, ilustrator и чтоб ещё
1. Допустим у файла нет расширения
2. Или оно не соответствует формату (Например Vbs а надо что бы его обработало как cmd файл ).
3. Запуск из альтернативного потока - если написать cmd /k :файл то из за ":" вылетит ошибка WshShell.Run смотрит конкретно на расширение файла
Нет правда надо)) а то я на теме cmd/wsh уже зациклился =(
Порой пытаюсь сделать, невозможное средствами этих интерпретаторов )