Доброго дня!
На меня тут недавно «наехали» (в хорошем смысле 😊): «Дескать… говоришь вот создать BAT-файл*, а как это сделать-то? Учишь непонятно чему… лишь плохому…».
* Для справки.
BAT-файл — текстовый файл со списком команд. При его запуске (открытии) — интерпретатор ОС выполняет их одну за одной. Это очень удобно для выполнения повторяющихся задач (например, если вам нужно запускать каждый раз игру с высоким приоритетом, или чистить определенную папку, и др.).
*
Собственно, в рамках сегодняшней статьи решил исправиться — кратко показать, как их создавать, и дать несколько примеров для решения самых популярных рутинных задач (довольно часто для этого BAT’ники и используют).
Думаю, что многие пользователи смогут слегка до-корректировать мои примеры и создадут для себя вполне рабочие BAT-файлы. 😉
Итак…
*
Содержание статьи📎
- 1 Создание BAT файлов: на примерах
- 1.1 Основы! С чего начать (Вариант 1: проверка пинга)
- 1.2 Вариант 2: запуск игры с высоким приоритетом + откл. авто-поиска Wi-Fi сетей
- 1.3 Вариант 3: создание резервной копий файлов и точки восстановления в Windows
- 1.4 Вариант 4: очистка временных папок
- 1.5 📌 Вариант 5: форматирование диска/флешки (с ручным выбором буквы, имени и файловой системы)
- 1.6 Как запускать BAT-файл от имени администратора (и по расписанию)
- 1.7 Если при выполнении BAT-файла появятся крякозабры вместо русского текста 👌
→ Задать вопрос | дополнить
Создание BAT файлов: на примерах
Основы! С чего начать (Вариант 1: проверка пинга)
Для начала покажу, как создать простейший BAT-файл для проверки пинга (для общего понимания процесса…).
ШАГ 1
Первым делом необходимо создать самый обычный текстовый файл (такой же, как вы создаете в блокноте). Достаточно кликнуть правой кнопкой мыши по любому свободному месту на рабочем столе и выбрать в меню «Текстовый файл» (Text Document). 👇
Создаем текстовый документ
ШАГ 2
Название файла у этого текстового документа может быть любым (но лучше использовать англ. символы).
Далее следует открыть этот файл и вписать в него нужные команды. В своем примере я впишу только одну (если вы делаете это впервые — рекомендую повторить ее вместе со мной):
ping ya.ru -t
Разумеется, файл нужно сохранить. Кстати, вместо ya.ru можно указать google.ru или любой другой адрес (обычно, многие указывают свой игровой сервер, и запускают этот BAT’ник, когда в игре наблюдаются лаги).
Копируем в него нашу команду и сохраняем файл.
ШАГ 3
Затем обратите внимание на расширение файла — у текстового файла оно «.TXT». Кстати, если у вас не отображаются расширения — можете 📌 прочитать эту заметку или просто введите в командной строке две вот эти команды (последовательно):
reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced» /v HideFileExt /t REG_DWORD /d 00000000 /f
taskkill /F /IM explorer.exe & start explorer
*
Нам нужно переименовать файл так, чтобы вместо «.TXT» — было новое расширение «.BAT»!
Меняем расширение TXT на BAT
ШАГ 4
Теперь достаточно кликнуть по «нашему» файлу правой кнопкой мыши и запустить его от имени администратора — автоматически появится окно командной строки с проверкой пинга. Удобно? Вполне! 👌
Идет проверка пинга!
ШАГ 5
Чтобы отредактировать BAT-файл (и каждый раз не переименовывать его туда-сюда) — рекомендую вам установить блокнот Notepad++ (уже ранее добавлял его в подборку).
После установки Notepad++ — достаточно кликнуть ПКМ по BAT-файлу — и в появившемся меню выбрать опцию редактирования…
Редактировать BAT
*
Вариант 2: запуск игры с высоким приоритетом + откл. авто-поиска Wi-Fi сетей
Этот скрипт рекомендуется попробовать пользователям ноутбуков, кто играет в сетевые игры.
*
Этот BAT-файл я создал на одном своем рабочем ноутбуке (он уже довольно «старый», и нередко притормаживал при запуске игр). Однако, благодаря нескольким строкам кода — удается вполне комфортно играть. 👌
Что за строки нужно добавить в BAT (выделены коричневым):
cmd.exe /c start /high /D «C:\Games\Counter-Strike 1.6\» hl.exe -game cstrike -appid 10 -nojoy -noipx -noforcemparms -noforcemaccel
netsh wlan set autoconfig enabled=no interface=»Wi-Fi»
pause
netsh wlan set autoconfig enabled=yes interface=»Wi-Fi»
pause
*
Что он делает:
- запускает игру CS с высоким приоритетом (это позволяет снизить кол-во притормаживаний в играх). Разумеется, вместо строки «C:\Games\Counter-Strike 1.6\» hl.exe — вы можете указать свою игру и ее расположение;
- отключает авто-поиск Wi-Fi сетей (это снижаем пинг и увел. скорость сети // правда не дает подключаться к другим Wi-Fi сетям). Кстати, вместо «Wi-Fi» — нужно указать название своего адаптера (посмотрите так: нажмите Win+R, и используйте команду ncpa.cpl);
Название адаптера
- далее идет пауза — скрипт будет ждать нажатия какой-нибудь клавиши (примечание: т.к. у нас будет запущена игра — это окно скроется из вида, и оно не будет нам мешать);
- когда через часик-другой игра будет закрыта, — вы увидите окно командной строки и нажмете какую-нибудь клавишу — будет снова включен авто-поиск Wi-Fi сетей. Удобно? 😉
*
Вариант 3: создание резервной копий файлов и точки восстановления в Windows
Приведу наиболее простую и довольно надежную команду для создания резервных копий файлов и папок:
xcopy C:\Games D:\backup /f /i /y /s
*
Она копирует один каталог в другой (просто, без вопросов и расспросов). Если вам нужно скопировать 2 или 3 (или более) каталогов — просто создайте несколько подобных строк.
Расшифровка:
- C:\Games — тот каталог, который будем копировать (все подкаталоги и файлы из них тоже будут скопированы);
- D:\backup — тот каталог, куда будет всё скопировано;
- /f — выводит имена файлов (чтобы вы видели, что происходит);
- /i — создает новый каталог, если на диске «D:» нет каталога «backup» (см. строку выше);
- /y — перезаписывает старые файлы новыми;
- /s — копирует каталоги и подкаталоги, если в них есть какие-то файлы.
*
Для создания точки восстановления можно использовать следующий код:
wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint «MyRestorePoint», 100, 7
pause
После запуска подобного BAT-файла — точка восстановления будет создана в авто-режиме! Это очень удобно делать перед установкой нового софта, железа и пр. (чтобы проверить есть ли точка — нажмите Win+R, и используйте команду: rstrui). 👇
Если точки нет (как в моем примере ниже) — прочитайте это!
Точки восстановления создаются!
*
Вариант 4: очистка временных папок
Здесь есть несколько вариантов «подхода». Я приведу один из самых простейших, см. 4 строки ниже. 😉
del /q /f /s %WINDIR%\Temp\*.*
del /q /f /s %SYSTEMDRIVE%\Temp\*.*
del /q /f /s %Tmp%\*.*
del /q /f /s %Temp%\*.*
📌 Что это означает:
- BAT-файл с этими строками чистит временные папки в Windows (как правило, в них скапливается один «мусор», которые занимает лишь место на диске);
- %WINDIR%\Temp\ — это папка «C:\Windows\Temp»;
- %SYSTEMDRIVE% — это системный диск «C:\»;
- *.* — маска для удаления всех файлов;
- /q /f /s — удаление всех каталогов и подкаталогов (без вопросов).
*
📌 Что можно еще добавить в наш скрипт:
- del /q /f /s %WINDIR%\Prefetch\*.* — эта строка очистит папку Prefetch (в ней сохраняется кэш от различного софта. При удалении той или иной программы — кэш в папке остается, и со временем — ее размер может разрастись);
- del /q /f /s %SYSTEMDRIVE%\*.log — удаление всех Log-файлов с системного диска (это файлы, в которых содержится история запуска программы, например. Во многих случаях они бесполезны). Большинство программ, кстати, ведут логи, со временем они разрастаются и могут отнять сотни МБ на диске;
- При помощи предыдущей команды можно удалить и другие файлы с системного диска (например, с расширением .tmp или .bak // достаточно поменять лишь концовку команды) — однако, будьте аккуратны, легко можно что-нибудь запороть!
*
📌 Вариант 5: форматирование диска/флешки (с ручным выбором буквы, имени и файловой системы)
Этот мини-скриптик может быть весьма полезный (например, если у вас «подвисает» проводник при обращении к флешки // или не запускается управление дисками).
*
Собственно, здесь все делается аналогично. Чтобы не удлинять процесс — вот вам сразу же сам скриптик (ссылка на RAR-архив с BAT-файлом), который «набросал» за 5 мин. (и еще 10 потратил на проверку 😉). Его текст (выделен коричневым):
@echo off
wmic logicaldisk get name, VolumeName, Size, FileSystem, NumberOfBlocks, description
set /p adisk=»Введите букву диска/флешки для форматирования: «
set /p named=»Введите имя для диска/флешки (любое, например, my_disk): «
set /p number=»Нажмите l — для формат. в NTFS, 2 — в FAT32, 3 — для в ExFAT. Ваше число: «if «%number%» == «1» (
format %adisk%: /FS:NTFS /Q /V:%named%
pause
exit /b
)if «%number%» == «2» (
format %adisk%: /FS:FAT32 /Q /V:%named%
pause
exit /b
)if «%number%» == «3» (
format %adisk%: /FS:ExFAT /Q /V:%named%
pause
exit /b
)
*
Он довольно простой, но будьте с ним аккуратны! Если укажите не ту букву накопителя — можно легко отформатировать не тот диск…
Как он работает (запускать под именем администратора):
- сначала он показывает информацию по всем подключенным дискам (и их буквы);
- далее запрашивает букву диска/флешки, которую нужно отформатировать (в своем примере я ввел G и нажал Enter);
- затем нужно ввести название диска — может быть любым (главное, чтобы название было коротким и лучше использовать только латиницу!). Я использовал my_flash;
- после выбрать файловую систему (их тут три), и нажать Enter;
- если все введено корректно — диск/флешка будет отформатирована! 👌
Пример работы BAT-файла для форматирования флешки
*
Как запускать BAT-файл от имени администратора (и по расписанию)
Способ 1
Самый простой вариант — нажать ПКМ по BAT-файлу и в контекстном меню выбрать «Запуск от имени администратора». См. скрин ниже. 👇
Нажать ПКМ по BAT-файлу
Способ 2
Можно нажать ПКМ по BAT-файлу и создать для него ярлык на рабочем столе. См. скрин ниже. 👇
Создание ярлыка к BAT-файлу
Далее в свойства ярлыка поставить галочку, что задача должна выполняться от имени администратора. Таким образом при каждом двойном клике по этому ярлыку — BAT’ник будет запускаться от админа. 👌
Свойства ярлыка — запускать с админ. правами
Способ 3
В планировщике заданий Windows (чтобы его открыть нажмите Win+R, и используйте команду control schedtasks) можно настроить запуск BAT-файла в нужное время и с нужными правами (т.е. автоматически). Это может быть весьма удобно, и серьезно упростить работу со множеством задач (очистка Windows от мусора, создание бэкапов и пр.) — точно никогда не забудете!
Более подробно о том, как создать задачу в планировщике заданий — я 📌 рассказывал в этой заметке.
Триггеры — когда выполнять задачу, расписание
*
Если при выполнении BAT-файла появятся крякозабры вместо русского текста 👌
Чаще всего это бывает с теми BAT, в которых есть русские символы и выставлена «неправильная» кодировка (например, они часто встречаются в пути к папке: «C:\Games\Лучшие игры»). Кстати, в этом случае BAT-файл работать не будет: после попытки выполнения операции с «крякозабрами» — появится ошибка и окно CMD будет закрыто…
*
Что можно сделать:
- первое: попробуйте в начало BAT-файла добавить код @chcp 1251 (и сохраните файл!);
- второе: установите блокнот Notepad++ и задействуйте OEM-866 кодировку в меню: «Кодировки/Кодировки/Кириллица/OEM-866» (предварительно, для бэкапа, скопируйте весь текст текущего документа в другой файл).
OEM 866 — пример, что нужно включить // программа Notepad++
*
👉 Доп. в помощь!
Вместо текста иероглифы, квадратики и крякозабры (в браузере, Word, тексте, окне Windows).
*
Дополнения по теме — приветствуются!
Удачи!
👋
Windows
- 16.05.2019
- 13 313
- 2
- 22.05.2019
- 52
- 49
- 3
- Содержание статьи
- Использование метода Run объекта WScript.Shell
- Комментарии к статье ( 2 шт )
- Добавить комментарий
Использование метода 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"""
Самым важным во всех этих примерах — это соблюдение количества кавычек, будьте внимательны!
С этой статьей вы не научитесь программировать и даже не напишите как таковую программу, но найдете здесь отличные VBS скрипты и BAT файлы, которые без проблем напишете в обычном блокноте Windows, сможете усовершенствовать по своему, потом похвастаться перед друзьями и близкими. Возможно это поднимет вам настроение и вы отлично проведете время.
Большинство похожих скриптов пишутся для удобства и автоматизации каких-либо действий на компьютере с ОС Windows. Представленные же ниже скрипты мало окажутся полезными (может мне так кажется), но они отлично подойдут для первоначального знакомства с «кодингом». Вы отлично проведете время, удивив как себя, так и знакомых чайников (не программистов), плюс это еще один хороший вариант убить время за компьютером.
Немного терминологии:
- VBS — язык программирования для создания скриптов в ОС Windows, создается/редактируется в Блокноте Windows, имеет разрешение «.vbs». Думаю, продолжать не имеет смысла, ибо это мало о чем скажет, особенно новичкам. Интересующимся — статья в Википедии.
- BAT — пакетный файл, в народе просто «батник». Расширение файла «.bat». Дальше аналогично — статья в Википедии.
Данных расширений (vbs, bat) файлы создаются во всеми известном Блокноте Windows (Notepad). Для большего удобства создания скриптов рекомендуется использовать усовершенствованный (скажем так) блокнот — Notepad++. Он удобен подсветкой синтаксиса большого количества языков программирования, если вам это мало о чем говорит, то скачайте и пишите в нем — ошибок сделаете меньше в коде, ну или будет их проще найти, чем в том же мало функциональном Блокноте Windows.
Скачать Notepad++ можно на официальном сайте.
Для наглядности пример (слева — Блокнот Windows, справа — Notepad++):
Приступим
Если вы уже знакомы с VBS скриптами и батниками, то скорее всего нижеследующие примеры вам будут неинтересны, если же вы новичок, то для первоначального ознакомления — то, что нужно.
Научим компьютер здороваться
- Открываем Блокнот (или Notepad Plus Plus).
- Копируем в вставляем код:
Set sapi=CreateObject(«sapi.spvoice»)
sapi.Speak «Hello!» - Обязательное условие: кавычки должны быть “такими”, «ёлочки» не подойдут, скрипт не будет обрабатываться и выйдет ошибка. Вместо слова «Hello» можете написать что угодно, даже по русски, при наличии русского голосового движка.
- Дальше выбираем Файл — Сохранить как — Тип файла — Все файлы — название.vbs
- Называйте файл как хотите, но не забудьте в конце прописать расширение — .vbs (пример — Privet.vbs).
- Теперь пробуйте проверить свой скрипт — запустите файл двойным щелчок мыши.
Один нюанс: если вы прописали в кавычках слова русскими буквами, а при запуске произносится непонятно что, то у вас просто не установлен русский голосовой движок. Подробная установка и настройка голосового движка выходит за рамки нашей статьи, поэтому более подробно ознакомьтесь здесь и вновь возвращайтесь сюда.
Теперь, сделаем следующее: пропишем данный скрипт в автозагрузку, а это означает то, что при запуске компьютера вам будет произнесено написанное в программе слово (слова), если как в примере, то будет говорить — «Hello» при каждом включении компьютера. Как это сделать?
Все просто, программу (скрипт) добавить в автозагрузку можно таким же образом, то есть через такой же VBS скрипт. Создаем файл в блокноте, копируем/вставляем (Ctrl+C/Ctrl+V) следующий код:
Dim vOrg, objArgs, root, key, WshShell
root = «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\»
KeyHP = «Program»
Set WshShell = WScript.CreateObject(«WScript.Shell»)
WshShell.RegWrite root+keyHP,»C:\Privet.vbs /autorun»
Изменяем путь до скрипта «говорилки», вот эту строчку — C:\Privet.vbs на свою. Прописываем где у вас лежит этот скрипт и как называется. Дальше сохраняем только что созданную мини программу в блокноте и запускаем. Все, теперь компьютер будет с вами здороваться пр каждом включении.
Открыть дисковод
- Открыть блокнот. Скопировать/Вставить следующий код:
Set a = CreateObject(«WMPlayer.OCX.7»)
Set b = a.CdromCollection
Set c = b.Item(0)
Set d = c.Eject
- Сохранить с расширением .vbs
- Запустить скрипт и откроется дисковод.
Есть более интересная модификация данного скрипта:
Set WMPlayer = CreateObject(«WMPlayer.OCX.7»)
do
WMPlayer.CdRomCollection.Item(0).Eject()
loop
В данном случае будет все время открываться-закрываться CD/DVD-привод, на ноутбуках в этом случае будет открываться после каждого его закрытия.
Внимание! Второй код (открытие-закрытие дисковода), некоторые антивирусы видят как вредоносную программу. Антивирус Касперского (в т.ч. и Kaspersky Free) его видит именно так и уничтожает сразу же. В первом же случае (просто открытие дисковода) для антивирусных программ не является вредоносным скриптом.
Чтобы прекратить автоматически открывать-закрывать дисковод необходимо:
- Запустить диспетчер задач (комбинация клавиш Windows — Ctrl+Alt+Del).
- Перейти на вкладку «Процессы».
- Найти процесс wscript.exe — правая кнопка мыши — завершить процесс.
Игра
Интересная находка из Сети — игра на VBS. Необходимо угадать число от 0 до 100. Скрипт автоматически при запуске задает (разгадывает) число, которое вам необходимо угадать и ввести в специальном окошке, при неправильном ответе даются подсказки, например меньше или больше.
Ниже тот самый код который необходимо скопировать и вставить в блокнот, далее сохранить (расширение .vbs).
Вы также можете изменять сообщения по своему, все что написано кириллицей без проблем редактируется. Не бойтесь сломать код. Поэкспериментируйте. В случае чего заново скопируйте рабочий код отсюда.
Set y = CreateObject(«Scripting.FileSystemObject»)
Set y = Nothing
Do
a = 0
u = 0
Randomize
Number = Int((RND*99)+1)
MsgBox «Я загадал число от 1 до 100, попробуй отгадать»,64,»Угадайка»
Do
a = a + 1
c = InputBox(«Угадай число» & vbCrLf & vbCrLf & «Попытка: » & a & vbCrLf & vbCrLf & «Чтобы посмотреть результаты введите число !» & vbCrLf & vbCrLf & «Для выхода оставьте поле пустым» & vbCrLf & vbCrLf,»Угадайка»)
If c = «!» Then CreateObject(«WScript.Shell»).Run «notepad C:\Windows\Result.dll»,3,True : Exit Do
If c <> «» Then
If IsNumeric(c) = True Then
If CInt(c) < Number Then MsgBox «Нет,это не » & c & «. Я загадал число больше»,64,»Угадайка»
If CInt(c) > Number Then MsgBox «Нет,это не » & c & «. Я загадал число меньше»,64,»Угадайка»
If CInt(c) = Number Then
Set y = CreateObject(«Scripting.FileSystemObject»)
MsgBox («Количество попыток: » & a)
If MsgBox («Правильно, это было число » & c & «. Начать заного?»,36,»Угадайка») = 6 Then Exit Do Else WScript.Quit
End If
Else
MsgBox «Это не число!»,16,»Угадайка»
a = a — 1
End If
Else
a = a — 1
l = MsgBox («Ты ничего не ввел. Выйти из программы?»,36,»Угадайка»)
If l = 6 Then WScript.Quit
End If
Loop
loop
Ну и перед тем как переходить к батникам (.BAT) воспользуемся самым полезным VBS скриптом из всех перечисленных в этой статье.
Скрипт закрывающий wscript.exe
Сам скрипт:
Set TaskKill = CreateObject(«WScript.Shell»)
TaskKill.Run «TaskKill /f /im wscript.exe»
По сути он делает тоже самое, что чуть выше объяснялось в диспетчере задач, как например нельзя просто взять и закрыть надоедливый скрипт открывающий-закрывающий дисковод, а запустив данный скрипт все запущенные будут закрыты. Это как клин клином вышибают.
Немного познакомились с VBS скриптами и о том как их писать в блокноте, теперь рассмотрим несколько примеров использования BAT файлов (далее — батник).
Завершение работы /Перезагрузка компьютера
Совсем простой батник состоящий всего из одной строки.
- Открываем Блокнот.
- Пишем следующий код:
shutdown -s -t 1 -c -f
- Далее Файл — Сохранить как — нзвание.bat
- Обратите внимание на расширение файла, это уже не VBS скрипт, а батник, по этому в конце названия прописываем .bat (Пример compoff.bat).
- Запускаем только что созданный батник двойным щелчком мыши и компьютер выключится (Завершение работы).
Есть такой вариант кода:
shutdown -r -t 1 -c -f
Все также, прописываем в блокноте, сохраняем с расширением .bat и после запуска компьютер перезагрузится (обычная перезагрузка компьютера).
Удаление обновлений
Данный батник пригодится в том случае, если вы уже обновились до Windows 10. В чем суть? В этом батнике перечислены команды по удалению нескольких обновлений, как видно из названия — обновления телеметрии, или как раз одна из шпионских штучек системы, мы однажды уже говорили как отключить функции слежки Windows 10, в данном же случае вы просто создаете батник, в содержимое копируете код ниже и запускаете, после чего будут удалены перечисленные обновления.
@echo
echo
echo Step 1: Delete Updates Telemetry
wusa /uninstall /kb:3068708 /quiet /norestart
wusa /uninstall /kb:3022345 /quiet /norestart
wusa /uninstall /kb:3075249 /quiet /norestart
wusa /uninstall /kb:3080149 /quiet /norestart
Таким образом можно удалить абсолютно любое обновление, даже назойливое KB971033 которое проверяет копию Windows 7 на подлинность.
В Интернете встречается много различных скриптов, якобы безвредных, но будьте осторожны, прежде чем пробовать непонятно какой скрипт, некоторые из них могут навредить, например — вносить изменения в реестр, а в случае каких ошибок система будет выдавать ошибки, в таком случае придется или восстанавливать реестр Windows или сделать восстановление системы.
В данной публикации мы рассмотрим такой тривиальный момент, как запуск приложения средствами WMI (инструментарий Windows) и CMD (командная строка). Как и прежде, ссылку на архив с примерами я разместил в конце статьи. И так, немного лирики…
Что запустить приложение, например диспетчер задач из командной строки, нужно просто в консольном окне CMD прописать путь к нужной программе, но, если данная программа является частью системы (находится в системных каталогах, например, Windows, System, System32 и так далее), то достаточно прописать название приложения. Так, что бы запустить диспетчер задач через командную строку, надо просто написать taskmgr.exe и нажать клавишу Enter, или… прописать аналогичную строку в меню Пуск/Выполнить.
Так как данный блог посвящен тематике Windows Script Host, то я решил написать два примера, один на языке vbscript, а другой на языке jscript, их задача – создать форму, на которой будет строка для ввода данных и две кнопки, форму создаем с помощью компонента WindowSystemObject. В строке мы будем прописывать название программы, которую хотим выполнить. Одна кнопка будет запускать приложение с помощью функции Run (смотрите статью “WScript.Shell метод Run”), а другая кнопка будет производить запуск с использование инструментария Windows, а точнее класса Win32_Process (его описание вы найдете в статье “Класс Win32_Process – работа с процессами”).
И так, начнем…
' *********************************************************** ' Пример запуска программы через ' Командную строку или WMI ' run-taskmgr.vbs ' *********************************************************** Option Explicit dim Button_Run_CMD, Button_Run_WMI dim label1, label2, label3 dim WshShell, WSO, objProcess dim f, t, r '****************************************************************** ' создаем ссылки на объекты set WshShell = WScript.CreateObject("Wscript.Shell") set WSO = WScript.CreateObject("Scripting.WindowSystemObject") set objProcess = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") '******************************************************************* '******************************************************************* ' создаем форму set f = WSO.CreateForm(0, 0, 0, 0, WSO.Translate("WS_CONTROLBOX | WS_MINIMIZEBOX")) f.Text = "Запуск диспетчера задач через командную строку или WMI" f.ClientWidth = 340 f.ClientHeight = 300 f.CenterControl() '******************************************************************* ' Метки, поля и кнопки set label1 = f.TextOut(10,10,"Введите название программы," & vbCrLf & "например: notepad.exe, calc.exe...") set r = f.CreateEdit(10,50,150,10) r.Text = "taskmgr.exe" set label2 = f.TextOut(10,80,"Запуск (программы) диспетчера задач из командной строки ") set Button_Run_CMD = f.CreateButton(10,100,100,25,"Запустить") Button_Run_CMD.OnClick = GetRef("Run_CMD") set label3 = f.TextOut(10,150,"Запуск (программы) диспетчера задач через WMI ") set Button_Run_WMI = f.CreateButton(10,170,100,25,"Запустить") Button_Run_WMI.OnClick = GetRef("Run_WMI") set t = f.CreateHyperLink(10,250,250,25,"scriptcoding.ru") '******************************************************************* f.Show() WSO.Run() '******************************************************************* ' Управляющие функции function Run_CMD() On Error Resume Next dim T_Edit, msg T_Edit = r.Text if T_Edit = "" then T_Edit = "taskmgr.exe" end if WshShell.Run(T_Edit) If Err.Number <> 0 Then msg="Ошибка!!!" & vbCrLf & "Путь не найден для " & T_Edit WScript.Echo (msg) end if end function function Run_WMI() dim T_Edit, objInParams, objOutParams, PID, msg T_Edit = r.Text if T_Edit = "" then T_Edit = "taskmgr.exe" end if objInParams = objProcess.Create(T_Edit, null, null, PID) if objInParams <> 0 then msg="Ошибка!!!" & vbCrLf & "Путь не найден для " & T_Edit WScript.Echo (msg) end if end function
Я поясню только ключевые моменты. Строки set r = f.CreateEdit(10,50,150,10) и r.Text = «taskmgr.exe» отвечают за создание на форме текстового поля для ввода данных, которое создается с помощью функции CreateEdit, сама функция возвращает объект, поэтому перед переменной стоит ключевое слово set. Для свойства Text мы назначили строковое значение по умолчанию “taskmgr.exe”, то есть, сразу после запуска скрипты, можно будет запустить диспетчер задач через командную строку или через класс Win32_Process.
Run_CMD() – в теле данной функции происходит проверка свойства Text, если оно пустое, то автоматически подставляется значение «taskmgr.exe». Далее происходит вызов метода Run для запуска приложения. Обратите внимание, что тут мы включили обработку ошибок (On Error Resume Next), если возникнет ошибка, например, имя или путь введены некорректно, то будет выведено предупреждающее сообщение.
Run_WMI() – тут происходит вызов метода Create класса Win32_Process. После выполнения метода идет проверка кода выхода, если его значение не ровно 0 – произошла ошибка, то выводится предупреждающее сообщение.
// *********************************************************** // Пример запуска программы через // Командную строку или WMI // run-taskmgr.js // *********************************************************** var Button_Run_CMD, Button_Run_WMI; var label1, label2, label3; //****************************************************************** // создаем ссылки на объекты var WshShell = WScript.CreateObject("Wscript.Shell"); var WSO = WScript.CreateObject("Scripting.WindowSystemObject"); var objProcess = GetObject("winmgmts:\\\\.\\root\\cimv2:Win32_Process"); //******************************************************************* //******************************************************************* // создаем форму var f = WSO.CreateForm(0, 0, 0, 0, WSO.Translate("WS_CONTROLBOX | WS_MINIMIZEBOX")); with(f){ Text = "Запуск диспетчера задач через командную строку или WMI"; ClientWidth = 340; ClientHeight = 300; CenterControl(); } //******************************************************************* // Метки, поля и кнопки label1 = f.TextOut(10,10,"Введите название программы, \nнапример: notepad.exe, calc.exe..."); var r = f.CreateEdit(10,50,150,10); r.Text = "taskmgr.exe"; label2 = f.TextOut(10,80,"Запуск (программы) диспетчера задач из командной строки "); Button_Run_CMD = f.CreateButton(10,100,100,25,"Запустить"); Button_Run_CMD.OnClick = Run_CMD; label3 = f.TextOut(10,150,"Запуск (программы) диспетчера задач через WMI "); Button_Run_WMI = f.CreateButton(10,170,100,25,"Запустить"); Button_Run_WMI.OnClick = Run_WMI; var t = f.CreateHyperLink(10,250,250,25,"scriptcoding.ru"); //******************************************************************* f.Show(); WSO.Run(); //******************************************************************* // Управляющие функции function Run_CMD(){ var T_Edit = r.Text, msg; if (T_Edit == ""){T_Edit = "taskmgr.exe";} try{ WshShell.Run(T_Edit); }catch(e){ if (e!=0){ msg="Ошибка!!!\n" + "Путь не найден для " + T_Edit; WScript.echo (msg); } } } function Run_WMI(){ var T_Edit = r.Text; var objInParams, objOutParams, msg; if (T_Edit == ""){T_Edit = "taskmgr.exe";} objInParams = objProcess.Methods_("Create").InParameters.SpawnInstance_(); objInParams.CommandLine = T_Edit; objOutParams = objProcess.ExecMethod_("Create", objInParams); // objOutParams.ProcessId - значение идентификатора процесса if (objOutParams.ReturnValue != 0) { msg="Ошибка!!!\n" + "Путь не найден для " + T_Edit; WScript.echo (msg); } }
Тут стоит обратить внимание на процесс вызова метода Create, дело в том, что если мы пропишем в сценарии jscript код:
objInParams = objProcess.Create(T_Edit, null, null, PID)
Скачать архив с примерами
как и в vbscript, то ошибки не произойдет, но мы не сможем при необходимости получить значение переменной PID (идентификатор процесса), да, такая особенность языка jscript. Обратите внимание, что если мы запустим, например, диспетчер задач из командной строки (метод Run), то никакое значение PID получить не сможем по определению, для этого надо использовать метод Exec объекта WScript.Shell.
I want to create a .bat file so I can just click on it so it can run:
svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service
Can someone help me with the structure of the .bat file?
abatishchev
98.4k88 gold badges297 silver badges433 bronze badges
asked Oct 21, 2008 at 12:54
1
To start a program and then close command prompt without waiting for program to exit:
start /d "path" file.exe
answered Jul 6, 2011 at 19:55
abatishchevabatishchev
98.4k88 gold badges297 silver badges433 bronze badges
6
You can use:
start "windowTitle" fullPath/file.exe
Note: the first set of quotes must be there but you don’t have to put anything in them, e.g.:
start "" fullPath/file.exe
abatishchev
98.4k88 gold badges297 silver badges433 bronze badges
answered Apr 11, 2013 at 17:18
user2075928user2075928
6715 silver badges2 bronze badges
1
it is very simple code for executing notepad
bellow code type into a notepad and save to extension .bat Exapmle:notepad.bat
start "c:\windows\system32" notepad.exe
(above code «c:\windows\system32» is path where you kept your .exe program and notepad.exe is your .exe program file file)
enjoy!
abatishchev
98.4k88 gold badges297 silver badges433 bronze badges
answered May 29, 2011 at 9:50
shinukbshinukb
4694 silver badges2 bronze badges
Just put that line in the bat file…
Alternatively you can even make a shortcut for svcutil.exe, then add the arguments in the ‘target’ window.
answered Oct 21, 2008 at 12:56
GavinCattellGavinCattell
3,88321 silver badges22 bronze badges
Just stick in a file and call it «ServiceModelSamples.bat» or something.
You could add «@echo off» as line one, so the command doesn’t get printed to the screen:
@echo off
svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service
answered Oct 21, 2008 at 13:09
myplacedkmyplacedk
1,5542 gold badges14 silver badges19 bronze badges
1
A bat file has no structure…it is how you would type it on the command line. So just open your favourite editor..copy the line of code you want to run..and save the file as whatever.bat or whatever.cmd
answered Oct 21, 2008 at 12:56
MBoyMBoy
7041 gold badge7 silver badges18 bronze badges
If you want to be real smart, at the command line type:
echo svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service >CreateService.cmd
Then you have CreateService.cmd
that you can run whenever you want (.cmd
is just another extension for .bat
files)
answered Oct 21, 2008 at 13:16
kͩeͣmͮpͥ ͩkͩeͣmͮpͥ ͩ
7,78327 silver badges40 bronze badges
What’s stopping you?
Put this command in a text file, save it with the .bat (or .cmd) extension and double click on it…
Presuming the command executes on your system, I think that’s it.
answered Oct 21, 2008 at 12:57
SimonSimon
78.8k25 gold badges89 silver badges118 bronze badges
As described here, about the Start
command, the following would start your application with the parameters you’ve specified:
start "svcutil" "svcutil.exe" "language:cs" "out:generatedProxy.cs" "config:app.config" "http://localhost:8000/ServiceModelSamples/service"
-
"svcutil"
, after thestart
command, is the name given to the CMD window upon running the application specified. This is a required parameter of thestart
command. -
"svcutil.exe"
is the absolute or relative path to the application you want to run. Using quotation marks allows you to have spaces in the path. -
After the application to start has been specified, all the following parameters are interpreted as arguments sent to the application.
answered May 16, 2013 at 7:11
GippheGipphe
1799 bronze badges
If your folders are set to «hide file extensions», you’ll name the file *.bat or *.cmd and it will still be a text file (hidden .txt extension). Be sure you can properly name a file!
answered Jul 30, 2011 at 12:58
Well, the important point it seems here is that svcutil is not available by default from command line, you can run it from the vs xommand line shortcut but if you make a batch file normally that wont help unless you run the vcvarsall.bat file before the script.
Below is a sample
"C:\Program Files\Microsoft Visual Studio *version*\VC\vcvarsall.bat" svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service
answered Feb 28, 2012 at 13:26
arkoakarkoak
2,44721 silver badges35 bronze badges