Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - запуск бат файла с указанием месторасположения окна

Ответить
Настройки темы
CMD/BAT - запуск бат файла с указанием месторасположения окна

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


здравствуйте!
имеются 2 бат файла просто запускающие "ping" к указанному IP адресу. при запуске их поочередно одно окно накладывается на другое. приходиться ручками перемещать чтоб видеть оба окна параллельно. хотелось бы это автоматизировать. как это можно осуществить?

Отправлено: 13:06, 02-03-2013

 

Ветеран


Contributor


Сообщения: 21537
Благодарности: 6161

Профиль | Отправить PM | Цитировать


Цитата Тимур_Макенов@vk:
да у меня в батнике только одна команда ping. я так понял вы имели ввиду запускать пинг непосредственно через саму exe-шку (ping.exe). но чем это поможет для моего случая? »
Речь выше шла про пакетные файлы — я сделал для них.

А Вы попробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Const SW_NORMAL = 1

Dim objSWbemObjectEx_Win32_Process
Dim objSWbemObjectEx_Win32_ProcessStartup
Dim lngProcessID

Dim strCommandLine1
Dim strCommandLine2

strCommandLine1 = "ping.exe -t ya.ru"
strCommandLine2 = "ping.exe -t google.com"

With WScript.CreateObject("WbemScripting.SWbemLocator")
	With .ConnectServer(".", "root\cimv2")
		Set objSWbemObjectEx_Win32_Process        = .Get("Win32_Process")
		Set objSWbemObjectEx_Win32_ProcessStartup = .Get("Win32_ProcessStartup").SpawnInstance_
		
		With objSWbemObjectEx_Win32_ProcessStartup
			.ShowWindow = SW_NORMAL
			.CreateFlags = 16
			
			.X =  25
			.Y = 100
			
			.XSize = 600
			.YSize = 300
			
			.XCountChars = 40
			.YCountChars = 3000
			
			.Title = "Ping 1"
			.FillAttribute = 30
		End With
		
		If objSWbemObjectEx_Win32_Process.Create(strCommandLine1, Empty, objSWbemObjectEx_Win32_ProcessStartup, lngProcessID) <> 0 Then
			WScript.Echo "Can't create process [" & strCommandLine1 & "]"
			WScript.Quit 1
		End If
		
		With objSWbemObjectEx_Win32_ProcessStartup
			.X = 650
			
			.Title = "Ping 2"
			.FillAttribute = 91
		End With
		
		If objSWbemObjectEx_Win32_Process.Create(strCommandLine2, Empty, objSWbemObjectEx_Win32_ProcessStartup, lngProcessID) <> 0 Then
			WScript.Echo "Can't create process [" & strCommandLine2 & "]"
			WScript.Quit 2
		End If
	End With
End With

WScript.Quit 0

Сохраните код в файл с расширением .vbs и запустите.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:33, 03-03-2013 | #11



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

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


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Речь выше шла про пакетные файлы — я сделал для них.
А Вы попробуйте:
читать дальше »
Сохраните код в файл с расширением .vbs и запустите. »

Спасибо огромное! И мне помогло. Долго мучался искал как сделать чтоб проверка сети "красиво запускалась" в один клик. Ваш код просто супер. С небольшими твиками вот он ниже. Запускается три окна - пинг на роутер (есть подозрения что проблемы именно с ним), на EX.UA, и конечно же GOOGLE.COM. Сделал фон чуть более контрастным (черный с белым, красным и зеленым), а так же указал заголовки окон (тоже удобно знать кого пингует это окно. Окна, при разрешении моего ноута занимают весь экран - пинг роутера всю левую половину, пинг екса - верхнюю правую часть, пинг гугла - нижнюю правую.


Код: Выделить весь код
Option Explicit

Const SW_NORMAL = 1

Dim objSWbemObjectEx_Win32_Process
Dim objSWbemObjectEx_Win32_ProcessStartup
Dim lngProcessID

Dim strCommandLine1
Dim strCommandLine2
Dim strCommandLine3

strCommandLine1 = "ping.exe -t 192.168.1.1"
strCommandLine2 = "ping.exe -t ex.ua"
strCommandLine3 = "ping.exe -t google.com"

With WScript.CreateObject("WbemScripting.SWbemLocator")
	With .ConnectServer(".", "root\cimv2")
		Set objSWbemObjectEx_Win32_Process        = .Get("Win32_Process")
		Set objSWbemObjectEx_Win32_ProcessStartup = .Get("Win32_ProcessStartup").SpawnInstance_
		
		With objSWbemObjectEx_Win32_ProcessStartup
			.ShowWindow = SW_NORMAL
			.CreateFlags = 16
			
			.X =  0
			.Y = 0
			
			.XSize = 640
			.YSize = 690
			
			.XCountChars = 40
			.YCountChars = 3000
			
			.Title = "Ping ROUTER"
			.FillAttribute = 2
		End With
		
		If objSWbemObjectEx_Win32_Process.Create(strCommandLine1, Empty, objSWbemObjectEx_Win32_ProcessStartup, lngProcessID) <> 0 Then
			WScript.Echo "Can't create process [" & strCommandLine1 & "]"
			WScript.Quit 1
		End If
		
		With objSWbemObjectEx_Win32_ProcessStartup
			.X = 680

			.XSize = 640
			.YSize = 330
			
			.Title = "Ping EX.UA"
			.FillAttribute = 4
		End With
		
		If objSWbemObjectEx_Win32_Process.Create(strCommandLine2, Empty, objSWbemObjectEx_Win32_ProcessStartup, lngProcessID) <> 0 Then
			WScript.Echo "Can't create process [" & strCommandLine2 & "]"
			WScript.Quit 2
		End If

		With objSWbemObjectEx_Win32_ProcessStartup
			.X = 685
			.Y = 365

			.XSize = 640
			.YSize = 330

			.Title = "Ping GOOGLE.com"
			.FillAttribute = 7
		End With
		
		If objSWbemObjectEx_Win32_Process.Create(strCommandLine3, Empty, objSWbemObjectEx_Win32_ProcessStartup, lngProcessID) <> 0 Then
			WScript.Echo "Can't create process [" & strCommandLine2 & "]"
			WScript.Quit 3
		End If
	End With
End With

WScript.Quit 0

Отправлено: 21:52, 22-01-2016 | #12


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:47, 13-12-2017 | #13


Ветеран


Contributor


Сообщения: 21537
Благодарности: 6161

Профиль | Отправить PM | Цитировать


Yoshimura, скриншоты, Ваш код, и ждать, пока кто-нибудь с Windows 10 на борту проверит-подтвердит таковое поведение.

Отправлено: 01:49, 13-12-2017 | #14


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png 2017-12-13_01-38-57.png
(238.9 Kb, 2 просмотров)
Тип файла: png 2017-12-13_01-43-52.png
(281.3 Kb, 1 просмотров)
Тип файла: png 2017-12-13_01-44-08.png
(275.9 Kb, 1 просмотров)

Уже все, нашел сам как исправить. Это как то связанно с нововведениями МелкоСофта в новой версии консоли встроенной в винду. Это можно отключить.
После запуска любого консольного приложения, нужно нажать правой кнопкой мыши на иконке консоли (самый левый верхний угол), в появившемся меню выбрать "Значения по умолчанию". Там во вкладке "настройки" выбрать внизу "Использовать прежнюю версию консоли". Возможно еще понадобиться зайти во вкладку "Расположение" и убрать галку в самом низу "автоматический выбор".
Данные действия возвращают поведение консоли "назад", к привычному по 7 винде.
Только нужно учитывать что это применяет настройки для всех консольных приложений.

Отправлено: 02:46, 13-12-2017 | #15


Ветеран


Contributor


Сообщения: 21537
Благодарности: 6161

Профиль | Отправить PM | Цитировать


Цитата Yoshimura:
Это как то связанно…»
Если сумеете ещё определить как именно, с чем конкретно связано — будет совсем хорошо.

Отправлено: 03:06, 13-12-2017 | #16


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Сложно сказать. Я довольно внимательно изучил код и конкретно функцию которая создает окна - именно с ней и была проблема. Все ее атрибуты работают и в новой версии консоли. Все кроме указания размера окна. С чем это связано я не знаю. На старой версии работает отлично как и было изначально. Разбираться в деталях дальше не вижу смысла и не имею желания - теперь работает как мне нужно и это хорошо.

Отправлено: 03:10, 13-12-2017 | #17


Ветеран


Contributor


Сообщения: 21537
Благодарности: 6161

Профиль | Отправить PM | Цитировать


Yoshimura, Вы так и не показали, что происходит, на скриншотах. Посему, я имел в виду, чтобы Вы определили конкретную настройку/возможность в новой версии консоли, которая препятствует ранее корректной работе класса Win32_ProcessStartup. Возможно, дело в новых умолчаниях для буфера окна, возможно — в чём-то другом, мне глядеть-проверять не на чем.

Отправлено: 03:27, 13-12-2017 | #18


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg before.jpg
(101.0 Kb, 4 просмотров)
Тип файла: jpg after.jpg
(109.9 Kb, 4 просмотров)

Iska, Я чесс слово не могу понять что я делаю не так или что от меня требуется. Я никогда еще не объяснял так долго не проблему, а ее, уже найденное собой же решение...
Ок, давайте еще раз что было/стало.
Итак сначала. Ваш код (спасибо большое еще раз за него) несколькими сообщениями выше я несколько модифицировал под свои цели. Его же и выложил сразу за вашим последним сообщением (Ваше от 03-03-2013 08:33, мое от 22-01-2016 20:52). Все было мило и прекрасно пока я не обновился на Windows 10, и на некоторых машинах на Windows Server 2016. Там этот код не дает задать размер окон - они появляются с неким "стандартным" размером в не зависимости от того как я менял этот код. Проблема еще усугубляется тем что обычно я работаю на мониторах с не очень большим разрешением, либо вообще через TeamViewer. Может для 1080p или тем более 4K монитора это совсем не было бы проблемой. Для меня это проблема так как и без того места мало на экране. Скриншот в приложении.

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

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

Этого достаточно?

Отправлено: 03:53, 13-12-2017 | #19


Ветеран


Contributor


Сообщения: 21537
Благодарности: 6161

Профиль | Отправить PM | Цитировать


Yoshimura, никаких проблем, кроме одной: выяснить, в чём, собственно, кроется причина такого поведения. Не «в особенностях поведения новой консоли Windows 10.0», а в чём конкретно. Всё остальное было зараз понятно и малоинтересно. И понятно, что Вы сами в дебри WinAPI не лазаете. От Вас я хотел хотя бы скриншот, и Вы его выложили, спасибо Вам за это.

Возможно, как-то поможет совместно-параллельное задание не только пары X/YSize, но и X/YCountChars, не знаю… Повторю, что мне пробовать даже не на чем.

Цитата Yoshimura:
Я вообще не знаю что такое новая версия консоли. »
https://www.google.ru/search?q=%D0%9...0%B8+Window+10

Цитата Yoshimura:
Этого достаточно? »
Да, вполне. Что могли, Вы сделали.

Отправлено: 04:58, 13-12-2017 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - запуск бат файла с указанием месторасположения окна

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужен скрипт для бат файла vlad_exe@vk Тест-форум 0 01-11-2012 00:58
Создание Бат-файла. Bond01 Тест-форум 3 08-05-2010 21:34
CMD/BAT - [решено] помогите плиз с написание бат файла sergey12989 Скриптовые языки администрирования Windows 7 16-04-2009 11:07
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50
Работа с почтовиком с помощью бат файла lehha Программирование и базы данных 5 18-04-2003 03:08




 
Переход