Разное

Vbs запуск exe: Объект WScript.Shell метод Run — запуск внешних программ

Запуск приложения с нужными параметрами запуска


Windows

  • Recluse
  • 16.05.2019
  • 3 303
  • 0
  • 22.05.2019
  • 4
  • 4
  • 0
  • Содержание статьи

Использование метода Run объекта WScript.Shell

Если вам понадобилось запустить через VBScript приложение с нужными параметрами запуска, то это может оказаться не так просто, как кажется. Правильно такой скрипт должен выглядеть следующим образом:

Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\cmdow\cmdow.exe"" /TV"""

Как вы можете догадаться, C:\Program Files\cmdow\cmdow.exe в данном примере это путь и сам исполняемый файл приложения, а /TV это его параметры.

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

Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\VideoLAN\VLC\vlc.exe"" ""E:\eto test\Misfits.S01E05.mkv"""

Или так, если нужно скомбинировать путь в кавычках с какой-то другой командой без них:

Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\VideoLAN\VLC\vlc.exe"" --fullscreen ""E:\eto test\Misfits.S01E05.mkv"""

Самым важным во всех этих примерах — это соблюдение количества кавычек, будьте внимательны!

Запуск сценариев (wscript.exe и cscript.exe) — Информатика, информационные технологии

Лабораторная работа №5.

Сервер сценариев Windows Scripting Host. Методы объектов WscriptShell и WshNetwork

Цель: Овладеть навыками работы сервером сценариев ОС Windows, изучить возможности сервера сценариев, режимы выполнения сценариев и методы объекта WscriptShell иWshNetwork.

Общие положения

Долгое время для выполнения однотипных задач в среде Windows и DOS служили командные (пакетные) BAT-файлы. Основным их недостатком были примитивный DOS-интерфейс – отсутствие интерактивности, и довольно ограниченные возможности по работе с WINDOWS (трудность работы в сети, с ярлыками, с реестром и т.д.).

Ситуация изменилась, когда Microsoft разработала Сервер Сценариев (Windows Scripting Host), который должен служить для автоматизации работы с повторяющимися процессами. Сам Windows Scripting Host не является языком как таковым, он только представляет свойства и методы для работы в Windows, которые могут использоваться другими языками сценариев. Наиболее удобными и предназначенными для этого явились ранее разработанные самой Microsoft языки сценариев Visual Basic Scripting Edition (VBScript) и JScript.

Раньше языки VBScript и JScript по своим возможностям были очень близки к Visual Basic for Applications — они также могли быть вызваны только из MS Internet Explorer и нескольких других программ Microsoft, которые их поддерживали.

С появлением Windows Scripting Host появилась возможность создавать для них отдельные сценарии, которые можно запускать и без Internet Explorer.

Также преимуществом Windows Scripting Host является то, что для запуска сценариев требуется мало памяти и то, что файлы сценариев могут быть практически любого размера (содержать десятки тысяч строк).

Еще одним преимуществом Windows Scripting Host является отсутствие среды разработки — не нужны компиляторы, редактирование сценариев может производиться в любом текстовом редакторе, способном работать с текстовыми файлами.

Сервер сценариев предназначен для автоматизации повторяющихся задач и во многом, по сравнению с обычными языками программирования, обладает достаточно скромными возможностями. Но по сравнению с пакетными файлами DOS он обладает более широкими возможностями. Такими как:

— вывод сообщений на экран;

— запуск других программ;

— работать с сетевыми дисками;

— устанавливать принтеры;

— работать с переменными среды;

— работать с реестром.

В Windows 2000 и последующих версиях Windows Scripting Host установлен по умолчанию. Отключить его использование можно только удалением ассоциаций с его файлами. Установленный Windows Script Host поддерживает несколько видов файлов: vbs, vbe, js, jse, wsf, wsc и wsh. Все они (кроме vbe и jse) являются простыми текстовыми файлами и могут редактироваться в любом текстовом редакторе.

Файлы .vbs и .js являются файлами, написанными на языке сценариев MS Visual Basic Script и MS JScript соответственно.

Файлы vbe и jse– это vbs и js-файлы зашифрованные с помощью программы MS Script Encoder.

Файлы с расширением .wsf – это файлы, содержащие XML-разметку для работы с WSH.

Файлы wsc — Windows Script Components (WSC) позволяют упаковывать сценарии для использования их в качестве СОМ-компонентов. По сути, это те же wsf-файлы, еще и содержащие COM-компоненты.

Файлы wsh являются файлами настроек Сервера Сценариев.

Запуск сценариев (WScript.exe и CScript.exe)

Для запуска сценариев, в составе Windows Scripting Host служат файлы WScript.exe (диалоговый режим) и CScript.exe (режим командной строки). Они находятся в каталоге C:\WINDOWS\system32\.

WScript.exe служит для запуска сценариев из Windows. Используя его, вы можете запускать сценарии подобно обычным приложениям Windows. Вот несколько способов:

1. Запускать сценарий, как обычное приложение двойным щелчком мыши, выделить и нажать Enter и т.д.

2. Ввести имя файла сценария и путь к нему в окне в окне “Выполнить” (RUN) меню “Пуск” (Start).

3. Ввести в строку окна “Выполнить” WScript.exe и имя файла сценария (с указанием пути к нему). При этом вы можете использовать параметры запуска WScript.exe.

CScript.exe — это версия Windows Scripting Host, которая используется для запуска сценариев из командной строки.

Синтаксис:

CScript [параметры] имя_файла.расширение [аргументы]

Для запуска сценариев, как с помощью CScript.exe так и с WScript.exe, можно использовать следующие параметры командной строки:

Параметр Версия WSH Описание
//B 1.0 Пакетный режим (подавляется вывод информации, запросов и сообщений об ошибках)
//D 2.0 Включить активную отладку
//E:язык 2.0 Указать язык сценария для исполнения файла
//H:CScript 1.0 Заменить исполняемый сервер сценариев на CScript.exe
//H:WScript 1.0 Заменить исполняемый сервер сценариев на WScript.exe
//I 1.0 Диалоговый режим (противоположный //B) (по умолчанию)
//Job:xxxx 2.0 Выполнить задание xxxx WSF-файла
//Logo 1.0 Отображать заставку (по умолчанию)
//Nologo 1.0 Не выводить заставку
//S 1.0 Запомнить параметры текущей командной строки для данного пользователя
//T:nn 1.0 Задать время исполнения сценария в секундах
//X 2.0 Выполнить сценарий под отладчиком
//U 2.0 Применять кодировку Unicode для перенаправленного консольного ввода-вывода

Например:

Cscript //T:10 Пример1.vbs

Отвести на выполнение сценария Пример1.vbs 10 секунд времени.

Попробуем сделать используемым сервером сценариев по умолчанию CScript.exe.

Для этого введем в командной строке:

wscript //h:cscript

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

Попробуем снова запустить сценарий VBScript Пример1.vbs.

Прочитать надпись практически невозможно, поскольку окно быстро “промелькнет” на экране.

Чтобы снова сделать сервером по умолчанию WScript.exe, введем в командную строку:

wscript //h:wscript

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

Какой способ лучше, нельзя сказать однозначно. У каждого есть свои плюсы и минусы. В пользу WScript.exe говорит его интерактивность. В пользу CScript.exe – незаметность для пользователя. Хотя для незаметности лучше всего включить пакетный режим с параметром //b.

Статьи к прочтению:

Introduction to scripting for systems administrators — Windows Scripting Host, part 1

Похожие статьи:
  • Запуск программ и документов

    Запускать программы на выполнение или документы на обработку можно следующими способами: — двойным щелчком (или одинарным щелчком, если в Windows 98 Вы…

  • Запуск прикладных программ

    Стандартный способ запуска любой программы состоит из ряда шагов: поиск названия программы (ярлыка программы) в Главном меню и щелчок левой клавишей мыши…

Скрипты сервера Windows Script Host (WSH)






В статье описаны скрипты WSH (Windows Script Host), способы их запуска, состав и функциональные возможности самого сервера Windows Script Host, и несколько примеров WSH скриптов. И так, давайте приступим. Все скрипты WSH являются интерпретируемыми, то есть, для их выполнения не требуется не требуется посредника, который будет преобразовывать ваш код в машинный. Вы просто открываете блокнот и пишите код сценария WSH. По умолчанию, Windows Script Host позволяет писать сценарии на двух языках, это VBScript и Jscript, но, при желании можно установить дополнительные модули для остальных языков, например, Perl, Phyton, TCL и так далее.

Теперь давайте рассмотрим, какие типы WSH сценариев можно создавать по умолчанию и их расширения:

.vbs – данный тип файлов содержит программный код на языке VBScript, если запустить такой скрипт, то сервер Windows Script Host автоматически применит для его обработки интерпретатор VBScript.
.vbe – в данном случае, это такой же файл как и vbs, но, закодированный.
.js — данный тип файлов содержит программный код на языке JScript, сервер автоматически будет его обрабатывать интерпретатором Jscript
.jse – закодированный сценарий WSH для языка Jscript.
.wsf – данный тип файлов содержит разметку XML и позволяет объединять вместе синтаксис различным языков.
.wsc – используется для регистрации вашего скрипта как COM-компонента (скриплет). Данный тип файлов требует отдельной статьи.
.wsh – управляет скриптом, аналог файла *.pif для DOS-программ. Будет рассмотрен в данной статье более подробно.






Хорошо, давайте рассмотрим, как запускать WSH скрипты. Для этого существуют два варианта:

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

Для простоты эксперимента, напишем два примера, один на языке VBScript, а второй на языке Jscript:

'**************************
'info.vbs
'Вывод информационных данных
'**************************
WScript.Echo "Информация о сценарии:"& vbCrlf & vbCrlf &_
     "Название объекта:" & vbCrlf & WScript.Name & vbCrlf & vbCrlf &_
     "Полный путь к исполняемому файлу сервера:" & vbCrlf & WScript.FullName & vbCrlf & vbCrlf &_
     "Путь к папке с wscript.exe и cscript.exe:" & vbCrlf & WScript.Path & vbCrlf & vbCrlf &_
     "Версия:" & vbCrlf & WScript.Version & vbCrlf & vbCrlf &_
     "Полный путь к сценарию:" & vbCrlf & WScript.ScriptFullName & vbCrlf & vbCrlf &_
     "Имя сценария:" & vbCrlf & WScript.ScriptName

Тут мы используем лишь один объект WScript, объявлять который не надо, он автоматически доступен. Свойство Echo отвечает за вывод информации, остальные свойства (Name, FullName …) позволяют нам получить дополнительную информацию, знак & позволяет объединять строки, символ подчеркивания говорит, что мы разделили строку, константа vbCrlf отвечает за перевод каретки.

И вот аналогичный скрипт WSH, но уже на языке Jscript:

//**************************
//info.vbs
//Вывод информационных данных
//**************************
var Mess;
 
Mess="Информация о сценарии:\n\n";
Mess=Mess + "Название объекта:\n" + WScript.Name + "\n\n";
Mess=Mess + "Полный путь к исполняемому файлу сервера:\n" + WScript.FullName + "\n\n";
Mess=Mess + "Путь к папке с wscript.exe и cscript.exe:\n" + WScript.Path + "\n\n";
Mess=Mess + "Версия:\n" + WScript.Version + "\n\n";
Mess=Mess + "Полный путь к сценарию:\n" + WScript.ScriptFullName + "\n\n";
Mess=Mess + "Имя сценария:\n" + WScript.ScriptName;
WScript.Echo (Mess);

Тут мы объявили переменную Mess, в которую прописали несколько строк, плюсик отвечает за объединение строк, а \n – за перевод строки. Для полноты понимания, советую, вам все-таки познакомиться с основами VBScript и Jscript и с остальными статьями из этой рубрики.

Хорошо, теперь стоит уточнить один момент, по умолчанию, если вы сохраните данные сценарии wsh и запустите их с помощью щелчка мыши, то их обработает программа wscipt.exe, однако есть одно но. После установки различных программ или каких-то изменений в системе, сценарии wsh будут обрабатываться совсем другой программой (блокнот, например). Просто надо отрыть свойства файла (скрипта), и изменить приложение для их обработки на wscript.exe (папка Windows\System32).

Теперь давайте рассмотрим способы запуска скриптов wsh.

 Консольный режим в командной строке – просто откройте командную строку и пропишите:

cscript.exe “путь к сценарию wsh”

Кавычки нужны лишь в том случае, если путь содержит пробелы, пример:

cscript.exe D:\work\info.vbs
cscript.exe D:\work\info.js

Графический режим в командной строке – просто откройте командную строку и пропишите:

wscript.exe “путь к сценарию”

Например:

wscript.exe D:\work\info.vbs
wscript.exe D:\work\info.js

Используя меню Пуск – Откройте меню пуск, и в поле Выполнить введите путь к сценарию wsh. Например:

D:\work\info.vbs
D:\work\info.js

Хорошо, теперь настало время настройки параметров запуска

Параметры cscript.exe — если вы войдете в командную строку и пропишите cscript.exe, то вам будет показан список параметров запуска сценариев wsh. Все параметры начинаются с символов //. Встроенной справки хватит, что бы во всем разобраться. Так, параметр //Job используется при вызове заданного задания для файлов wsf, пример я привел в статье “Знакомство с ws-файлами (windows script file)”.

Скачать архив с примерами

Параметры wscript.exe —  тут все намного проще. Просто кликните по вашему wsh скрипту правой кнопкой, выберите пункт свойства и перейдите на вкладку Сценарий. Тут можно задать время, через которое произойдет остановка сценария. После того, как вы зададите значение в секундах и нажмете кнопку применить, появится файл с аналогичным названием, но с расширением wsh. Если теперь запустить этот скрипт, то произойдет выполнение сценария с заданными настройками, но, как вы уже догадались, тут есть один подводный камень. У нас сейчас два файла с одинаковыми именами (info), но с разными расширениями, для какого бы скрипты мы не применяли настройки, все ровно будет создан лишь один info.wsh. Ладно, на этом пока все, комментируйте и подписывайтесь.








Как провести конвертирование VBScript в исполняемый файл (EXE)? [закрытый]

Подробнее

чтобы найти компилятор, у вас будет 1 на версию .net, введите в командной строке.

dir c:\Windows\Microsoft.NET\vbc.exe /a/s

Windows Forms

для версии Windows Forms (нет окна консоли, и мы не собираемся создавать какие — либо формы, хотя вы можете, если хотите).

строка компиляции в командной строке.

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /t:winexe "%userprofile%\desktop\VBS2Exe.vb"

текст для VBS2EXE.vb

Imports System.Windows.Forms 

Partial Class MyForm : Inherits Form 

Private Sub InitializeComponent() 


End Sub

Public Sub New() 

InitializeComponent() 

End Sub

Public Shared Sub Main() 

Dim sc as object 
Dim Scrpt as string

sc = createObject("MSScriptControl.ScriptControl")

Scrpt = "msgbox " & chr(34) & "Hi there I'm a form" & chr(34)

With SC 
.Language = "VBScript" 
.UseSafeSubset = False 
.AllowUI = True 
End With


sc.addcode(Scrpt)


End Sub

End Class

С помощью этих дополнительных параметров дает вам значок и манифест. Манифест позволяет указать run as normal, run elevated if admin, только run elevated.

/ win32icon: указывает файл значков Win32 (.ico) для ресурсов Win32 по умолчанию.

/ win32manifest: предоставленный файл встроен в раздел манифеста выходного PE.

теоретически, у меня есть UAC, поэтому не могу проверить, но положил это текстовый файл на рабочем столе и назовите его vbs2exe.манифест, сохранить как UTF-8.

командная строка

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /t:winexe /win32manifest:"%userprofile%\desktop\VBS2Exe.manifest" "%userprofile%\desktop\VBS2Exe.vb"

манифест

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" 
  manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" 
  processorArchitecture="*" name="VBS2EXE" type="win32" /> 
  <description>Script to Exe</description> 
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
  <security> <requestedPrivileges> 
  <requestedExecutionLevel level="requireAdministrator" 
  uiAccess="false" /> </requestedPrivileges> 
  </security> </trustInfo> </assembly>

надеюсь, теперь он будет работать только как администратор.

дайте доступ к объектам Хоста

вот пример, дающий VBScript доступ к объекту .NET.

Imports System.Windows.Forms 

Partial Class MyForm : Inherits Form 

Private Sub InitializeComponent() 


End Sub 

Public Sub New() 

InitializeComponent() 

End Sub 

Public Shared Sub Main() 

Dim sc as object
Dim Scrpt as string 

sc = createObject("MSScriptControl.ScriptControl") 

Scrpt = "msgbox " & chr(34) & "Hi there I'm a form" & chr(34) & ":msgbox meScript.state" 

With SC
.Language = "VBScript"
.UseSafeSubset = False
.AllowUI = True
.addobject("meScript", SC, true)
End With 


sc.addcode(Scrpt) 


End Sub 

End Class 

для встраивания информации о версии

скачать vbs2exe.res файл изhttps://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 и поставить на рабочий стол.

скачать ResHacker от http://www.angusj.com/resourcehacker

открыть vbs2exe.res файл в ResHacker. Редактировать прочь. Нажмите кнопку Compile. Выберите меню Файл — Спасать.

тип

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /t:winexe /win32manifest:"%userprofile%\desktop\VBS2Exe.manifest" /win32resource:"%userprofile%\desktop\VBS2Exe.res" "%userprofile%\desktop\VBS2Exe.vb"

Запланируйте запуск файла .vbs в Windows — command-line

У меня есть скрипт VBScript , который запускает приглашение cmd, телнеты в устройство и конфигурацию TFTP на сервер. Он работает, когда я вошел в систему и запускаю его вручную. Я хотел бы автоматизировать его с помощью планировщика задач Windows .

Любая помощь будет оценена, вот сценарий VBScript:

set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "cmd" 
WScript.Sleep 100 
WshShell.AppActivate "C:\Windows\system32\cmd.exe" 
WScript.Sleep 300 
WshShell.SendKeys "telnet 10.20.70.254{ENTER}" 
WScript.Sleep 300 
WshShell.SendKeys "netscreen" 
WScript.Sleep 300 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300
WshShell.SendKeys "netscreen" 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300 
WScript.Sleep 300 
WshShell.SendKeys "save conf to tftp 10.10.40.139 test.cfg{ENTER}"
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close telnet session' 
set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "cmd" 
WScript.Sleep 100 
WshShell.AppActivate "C:\Windows\system32\cmd.exe" 
WScript.Sleep 300 
WshShell.SendKeys "telnet 10.20.70.254{ENTER}" 
WScript.Sleep 300 
WshShell.SendKeys "netscreen" 
WScript.Sleep 300 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300
WshShell.SendKeys "netscreen" 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300 
WScript.Sleep 300 
WshShell.SendKeys "save conf to tftp 10.10.40.139 palsg140.cfg{ENTER}" 'repeat as needed 
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close telnet session' 
WshShell.SendKeys "{ENTER}" 'get command prompt back 
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close cmd.exe

WshShell.SendKeys "{ENTER}" 'get command prompt back 
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close cmd.exe

command-line

vbscript

windows-server-2003

telnet

wsh

Поделиться

Источник


»    

12 ноября 2008 в 14:58

6 Ответов



4

Добавьте запланированную задачу, которая запускает сценарий с вашими учетными данными. Напомните себе, что вам необходимо обновлять учетные данные для выполнения задачи каждый раз, когда вы меняете свой пароль. Было бы неплохо иметь скрипт «phone home» через email или что-то еще каждый раз, когда он запускается, чтобы вы могли сказать, выполняется ли он.

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

Поделиться


tvanfosson    

12 ноября 2008 в 15:02



3

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

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

Я предлагаю вам немного сжать ваш файл сценария:

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

Run "cmd.exe" 
SendKeys "telnet 10.20.70.254{ENTER}" 
SendKeys "netscreen" 
SendKeys "{ENTER}" 
SendKeys "netscreen" 
SendKeys "{ENTER}" 
SendKeys "save conf to tftp 10.10.40.139 test.cfg{ENTER}"
SendKeys "exit{ENTER}" 'close telnet session' 

Run "cmd.exe" 
SendKeys "telnet 10.20.70.254{ENTER}" 
SendKeys "netscreen" 
SendKeys "{ENTER}" 
SendKeys "netscreen" 
SendKeys "{ENTER}" 
SendKeys "save conf to tftp 10.10.40.139 palsg140.cfg{ENTER}" 'repeat as needed 
SendKeys "exit{ENTER}" 'close telnet session' 
SendKeys "{ENTER}" 'get command prompt back 
SendKeys "exit{ENTER}" 'close cmd.exe
SendKeys "{ENTER}" 'get command prompt back 
SendKeys "exit{ENTER}" 'close cmd.exe

Sub SendKeys(s)
  WshShell.SendKeys s
  WScript.Sleep 300
End Sub

Sub Run(command)
  WshShell.Run command
  WScript.Sleep 100 
  WshShell.AppActivate command 
  WScript.Sleep 300 
End Sub

Поделиться


Tomalak    

12 ноября 2008 в 15:24



1

просто сделайте пакетный файл, который содержит это:

cscript.exe myscript.vbs

сохраните его как что-то вроде myscript.bat.

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

Есть несколько опций , которые вы можете использовать с cscript, чтобы он не показывал логотип и т. д.

Поделиться


scottm    

16 июня 2009 в 21:39



1

Я довольно SendKeys не будет работать, если вы не вошли в систему.
В любом случае, по моему опыту, это ненадежно.
Возможно, вам лучше использовать пакетный файл DOS.

getftpconf.bat:

telnet 10.10.40.139
netscreen
netscreen
save conf to tftp 10.10.40.139 palsg140.cf
exit

Что-то вроде того.

Если в командной строке есть вывод, который вам нужно записать, вы можете поставить «>> output.txt» в конце ярлыка командной строки.

Затем вы можете вызвать другой пакетный файл, который отправляет этот output.txt через ftp туда, куда вам нужно.

Вы можете легко настроить этот пакетный файл для запуска в качестве запланированной задачи в windows.

Поделиться


Michael Galos    

17 ноября 2008 в 14:09



1

Я почти уверен, что SendKeys не будет работать, если рабочий стол заблокирован или пользователь не вошел в систему.

Поделиться


aphoria    

12 ноября 2008 в 17:46



0

Пакетные файлы не работают в Windows с Telnet (отлично работает в UNIX — опять же, путь к Microsoft). Как уже упоминалось здесь, sendkeys не работает в vba, когда он не вошел в систему.

К сожалению, у меня нет решения «this does work» для you….I’m, застрявшего на той же проблеме

Поделиться


»    

16 июня 2009 в 21:27


Похожие вопросы:

Ошибка VBS собственность скрипт

Я изменил свойства файла VBS для запуска с cmd,но теперь параметр open with исчез из контекстного меню. Как я могу установить его обратно в сценарий windows vbs?

Запуск субподрядчика vbs из C#

Можно ли выполнить определенный sub в файле vbs из приложения c#? Я посмотрел на создание процесса, а затем его запуск, но не могу найти способ указать, какой именно суб в файле скрипта должен быть…

запуск vbs-файла из java

У меня есть VBS файл test.vbs в C:/work/selenium/chrome/ и я хочу запустить его из моей программы Java, поэтому я попытался это сделать, но без успеха: public void test() throws InterruptedException…

Ошибка — «нет скриптового движка для расширения файла .vbs» при использовании «Git Bash Here» в Windows 7

У меня установлена последняя версия выпуска git для windows. Когда я использую здесь опцию контекстного меню Git Bash, я получаю следующую ошибку. Для расширения файла .vbs не существует скриптового…

Windows 7 VBS сгенерированный пакетный файл не запускается

Я использую VBS для создания пакетного файла для установки обновлений. Чтобы убедиться, что он работает так, как я ожидал, я построил этот небольшой тестовый скрипт, однако сгенерированный пакетный…

Ошибка распаковки файла при запуске скрипта VBS из пакета в Windows 10

При запуске пакета VBS unzip code в Win 10, я получаю сообщение об ошибке ниже. Что может быть причиной этого, учитывая, что ранее сообщалось о работе других? Изменение целевых каталогов или их…

Запуск макроса из файла VBS дает ошибку

Я использую код vbs для автоматического открытия и запуска макроса Excel, но получаю следующее сообщение об ошибке: Ошибка: не удается запустить макрос file location. Макрос может быть недоступен в…

Неверный запрос VBS в Windows 10

Почему следующий код VBS работает в Windows 7, но дает ошибку на Windows 10: strComputer=. Set objWMIService = GetObject(winmgmts: & {impersonationLevel=impersonate}!\\ & strComputer &…

Вызов макроса VBA из файла .vbs вызывает ошибку 800A03EC

Я пытаюсь запустить макрос VBA через файл .VBS(имя файла: Check_final.vbs). Вот этот код Option Explicit run_macro Sub run_macro() Dim xl1 Dim sCurPath Dim xlBook Dim FolderFromPath Set xl1 =…

Windows 7 Как заставить explorer открыть файл с помощью скрипта vbs

Я запускаю openjdk на windows 7 без прав администратора Я прошел через диалог explorer open-with, чтобы выбрать java в качестве программы для open .jar файл. Чтобы запустить .jar file by (double)…

Проверка работы и перезапуск программы через VBS скрипт


Windows

  • Recluse
  • 03.11.2016
  • 3 946
  • 0
  • 15.03.2019
  • 4
  • 4
  • 0
  • Содержание статьи

Примитивный скрипт для перезапуска на VBScript

Если нужно реализовать проверку работы программы и её перезапуск через VBS скрипт, то вы по нужному адресу. Делается это следующим скриптом:

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Do
Running = False
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objItem in colItems
	If objItem.Name = "Notepad.exe" Then
		Running = True
		Exit For
	End If
Next
If Not Running Then
	CreateObject("WScript.Shell").Run "Notepad.exe", 1, True
End If
WScript.Sleep 30000
Loop

Разберем наиболее важные части скрипта. Одна из самых первых строчек в скрипте устанавливает значение переменной Running в значение False — дальше станет понятно зачем. В строчке If objItem.Name = «Notepad.exe» Then задается имя процесса, который нужно найти в списке процессов на компьютере (именно на компьютере, а не у пользователя!). Затем, если он найден, то строчка Running = True устанавливает переменную Running в значение True. Если же не запущен, то ничего не делается, так как переменная Running уже установлена в значение False.

После этого, если значение Running равно False (строчка If Not Running Then), то происходит запуск нужного исполняемого файла (CreateObject(«WScript.Shell»).Run «Notepad.exe», 1, True). Затем команд WScript.Sleep 30000 в скрипте указывает приостановить работу скрипта на 30000 миллисекунд (на 30 секунд, но время в vbs скрипте задается именно в миллисекундах). Затем строчка Loop приказывает начать выполнение цикла по новой — с команды Do.


Метод запуска

(Windows Script Host)

Запускает программу в новом процессе.

объект  .Run  (strCommand, [intWindowStyle], [bWaitOnReturn]) 
объект

WshShell объект.

strCommand

Строковое значение, указывающее командную строку, которую нужно запустить.Вы должны включить любые параметры, которые хотите передать исполняемому файлу.

intWindowStyle

Необязательно. Целочисленное значение, указывающее внешний вид окна программы. Обратите внимание, что не все программы используют эту информацию.

bWaitOnReturn

Необязательно. Логическое значение, указывающее, должен ли сценарий ждать завершения выполнения программы перед переходом к следующему оператору в вашем сценарии.Если установлено значение true , выполнение сценария останавливается до завершения программы, а Run возвращает любой код ошибки, возвращаемый программой. Если установлено значение false (по умолчанию), метод Run возвращается сразу после запуска программы, автоматически возвращая 0 (не интерпретируется как код ошибки).

Следующий код VBScript открывает копию текущего выполняемого сценария в Блокноте.

Копировать код
 Установить WshShell = WScript.CreateObject ("WScript.Shell")
WshShell.  Запустите  «% windir% \ notepad» и WScript.ScriptFullName 

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

Копировать код
 Установить WshShell = WScript.CreateObject ("WScript.Shell")
Возврат = WshShell. Выполнить ( «блокнот» и WScript.ScriptFullName, 1, true )  

Следующий код VBScript открывает командное окно, меняет путь на C: \ и выполняет команду DIR.

Копировать код
 Dim oShell
Установите oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd / K CD C: \ & Dir"
Установите oShell = Nothing 

.

.Run — VBScript — SS64.com

.Run — VBScript — SS64.com

Выполнить внешнюю команду.

 Синтаксис
      objShell.Run ( strCommand , [ intWindowStyle ], [ bWaitOnReturn ])

Ключ
   objShell: объект WScript.Shell

   strCommand: Команда для выполнения

   intWindowStyle
   (Необязательно): значение Int, указывающее на появление
                  окно программы.Не все программы используют это.

   bWaitOnReturn: дождитесь завершения команды перед
                   продолжение выполнения сценария wsh.
 

Если для bWaitOnReturn установлено значение TRUE, метод Run возвращает
любой код ошибки, возвращаемый приложением.

Если bWaitOnReturn не указан или FALSE, этот метод немедленно возвращает
для выполнения сценария, а не ожидания завершения процесса (и возвращает
код ошибки 0)

Указание параметра bWaitOnReturn позволяет запускать программы синхронно
(один за раз).

Переменные среды в аргументе strCommand автоматически
расширен.

Если тип файла был правильно зарегистрирован в конкретной программе, вызов
run on a file of this type, выполняет программу. Например, если установлен Word
в вашей компьютерной системе вызов Run on a * .doc file запускает Word и загружает
документ.

Настройки для intWindowStyle:

0 Скрыть окно (и активировать другое окно.)
1 Активируйте и откройте окно. (восстановить размер и положение) Установите этот флаг при первом отображении окна.
2 Активировать и свернуть.
3 Активировать и развернуть.
4 Восстановить. Активное окно остается активным.
5 Активировать и восстановить.
6 Свернуть и активировать следующее окно верхнего уровня в Z-порядке.
7 Свернуть. Активное окно остается активным.
8 Показать окно в его текущем состоянии. Активное окно остается активным.
9 Восстановить и активировать. Установите этот флаг при восстановлении свернутого окна.
10 Устанавливает состояние показа на основе состояния программы, запустившей приложение.

Invisible.vbs

Этот однострочный сценарий VBScript можно использовать для запуска команды в невидимом окне:

CreateObject («Wscript.Shell»). Запустить «» «» & WScript.Arguments (0) & «» «», 0, False

‘Пример выполнения’ Demo.cmd ‘с невидимым.vbs
wscript.exe «invisible.vbs» «demo.cmd» // nologo

Примеры

Запустить Блокнот с текущим исполняемым скриптом:

Установите objShell = WScript.CreateObject ("WScript.Shell")
  objShell.Run  ("% windir% \ notepad.exe" & WScript.ScriptFullName) 

Запустить Блокнот с текущим исполняемым скриптом, указать
тип окна, дождитесь, пока пользователь отключит Блокнот,
и сохраните код ошибки, возвращаемый из Блокнота при выходе:

Установите objShell = WScript.CreateObject ("WScript.Shell")
intReturn =  objShell.Run  («notepad.exe» и WScript.ScriptFullName, 1, true)
Если intReturn <> 0 Тогда
   Wscript.Echo "Ошибка при запуске программы"
Конец, если 

Откройте окно cmd, измените путь на C: \ и выполните команду DIR:

Тусклый objShell
Установите objShell = WScript.CreateObject ("WScript.shell")
objShell . запустить  "cmd / K CD C: \ & Dir"
Установите objShell = Nothing
 

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

Установить objShell = CreateObject («WScript.Shell»)
objShell . запустить («cscript C: \ scripts \ demo.vbs»)

«Говори правду и беги» ~ югославская пословица

Связанный:

.Exec — Выполнить команду, возвращающую объект.
.ShellExecute — Запуск приложения в оболочке Windows.
cscript — Запуск файла VB сценария VB.
Аргументы — Передача аргументов сценарию.
Эквивалентная команда Windows CMD: ПУСК — Запустить
программа или команда.
Эквивалентный командлет PowerShell: Run


Авторские права © 1999-2020 SS64.com
Некоторые права защищены.

vbscript — Загрузить и запустить с VBS

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *