Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Скрипт для проверки запущенных процессов и последовательного запуска батников

В одной папке находится 4 батника и сама программа, нужен скрипт который при запуске запускает батник "1" запуская "ghost.exe" и просматривает запущенные процессы на наличие "ghost.exe" и когда он заканчивает работу процесс завершается и потом должен запуститься батник "2" и выдать примерно такое окно, а затем с такими же условиями "3" и "4"
Ответ:
Сообщение от sashaakm
2)как только он замечает что процесс пропал он должен запустить 2.bat и вывести окно с цифрой 1
Сообщение от sashaakm
3)проверяет запущен ли процесс и когда он исчезает запускает 3.bat и выводит окно с цифрой 2
процесса же уже нет, что проверять-то?
где-то надо еще и запуск процесса организовывать или его запуск как-то обусловлен?

Добавлено через 11 минут
вот для запуска одного bat
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
set "proc=ghost.exe"
 
:: Постоянный мониторинг: Пропал процесс - запуск 2.bat и окна
cmd /c for /l %%i in () do @tasklist /fi "imagename eq %proc%"^|findstr /v :^|^| (start "" "2.bat"& msg * 1^& exit /b)^&^>nul timeout /t 1 /nobreak
:: Запуск процесса, если не запущен
tasklist /fi "imagename eq %proc%"|find /i "%proc%" || start "" "%proc%"
pause
думайте как сделать целиком (а я посмотрю )
Вопрос: Скрипт для проверки запущенного процесса

Всех приветствую. В интернете не нашёл ответа на свой вопрос.
Очень нужен vbs-скрипт, который будет проверять, запущен ли процесс, а если не запущен, то запускать его.
В принципе, вот пункты, которые важны.

1. Проверка процесса должна происходить раз в 15 минут.
2. Вот строка запускаемого процесса с параметрами:
Код vb.net
1
"RustDedicated.exe" -batchmode -Dfile.encoding=UTF-8 +server.hostname "LocalServer.Pro" +server.port 28015 +server.identity "d4t1" +server.maxplayers 30 +rcon.port 28016 +rcon.ip 192.168.1.2 +rcon.password 11112 +server.seed 123456
- Это сейчас прописано в батнике...батник не справляется с перезапуском как нужно.
3. Название проверяемого запущенного процесса: RustDedicated.exe.

Буду крайне благодарен тому, кто разбирается в Visual Basic Script'ах и поможет мне.
Ответ: Vasek2, Не, ну со своим кипятильником, нашу воду кипятить, пришли за водой, так и отлейте другим немножко.
Вопрос: Последовательный запуск батников

Смысл всего:
sql+ утилитой подключаясь к системе выгружаю через вьюху данные из БД в .csv файл
далее подключаюсь к другой БД (mysql) и из нашего .csv файла заполняю таблицу (прежде ее отчищая).

Проблема в том, что вся эта последовательность собрана в .cmd , где запускаются батники, а в батниках еще ссылки на файлы .sql

все файлы прикрепил. Ниже они же.

data4jira.cmd - должен запускаться по расписанию, запускает всю цепочку (в нем собственно и проблема). У меня выполняется первый батник, а второй (import_alfa.bat) не запускается. По отдельности они отрабатывают верно.

Windows Batch file
1
2
3
set NLS_LANG=.AL32UTF8
sql.bat /nolog @data4jira.sql
start import_alfa.bat
sql.bat - sql+ штуковина, возможно в ней какая-то строка, которая закрывает процесс?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@echo off
REM ######################################################################## 
REM #  (@)sql.bat
REM #
REM #  Copyright 2014 by Oracle Corporation,
REM #  500 Oracle Parkway, Redwood Shores, California, 94065, U.S.A.
REM #  All rights reserved.
REM #
REM #  This software is the confidential and proprietary information
REM #  of Oracle Corporation.
REM # 
REM # NAME  sql.bat
REM #
REM # DESC  This script starts SqlCli.
REM #
REM # AUTHOR bamcgill
REM #
REM # MODIFIED  
REM #   bamcgill    21/03/2014  Created
REM #   bamcgill    17/07/2014  Simplified classpaths   
REM #   bamcgill    11/12/2014  Renamed script and contents 
REM #   bamcgill    16/01/2015  Renamed script and contents 
REM #   bamcgill    05/02/2015  Added headless to STD_OPTS to allow use of internal X server.
REM #   totierne    16/10/2015  Put classpath on the end - to allow timesten jars  
REM #   bamcgill    08/06/2016  Allow JAVA_HOME to be set in env and add to path
REM #   bamcgill    09/06/2016  Allow JDBC to be set properly 8 thru 6
REM #   bamcgill    19/06/2016  Rework JAVA_HOME switches
REM ########################################################################
REM # SQL_HOME=.
 
REM Switch codepage to UTF
chcp 65001  >nul 2>&1
 
SET SQL_HOME=%~dp0..
REM SET DEBUG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000
 
REM If java home is not set, this is an opportunity to set it.
IF NOT DEFINED JAVA_HOME (
  REM SET JAVA_HOME="C:\work\sqldeveloper\jdk\jre"
  REM SET PATH="%JAVA_HOME%\bin;%PATH%"
) ELSE (
   REM if java home is set, add it to the path
   REM SET PATH="%JAVA_HOME%\bin;%PATH%"
)
 
REM Use internal simple X for awt in 
SET STD_ARGS=-Djava.awt.headless=true -Xss10M -Dfile.encoding=UTF-8
if "%ORACLE_HOME%" == "" (
      SET CPFILE=%SQL_HOME%\lib\oracle.sqldeveloper.sqlcl.jar;%CLASSPATH%) ELSE (SET CPFILE=%ORACLE_HOME%\jdbc\lib\ojdbc6.jar;%ORACLE_HOME%\ojdbc6.jar;%SQL_HOME%\lib\oracle.sqldeveloper.sqlcl.jar;%CLASSPATH%
      )
 
REM SET CPFILE=%ORACLE_HOME%\jdbc\lib\ojdbc8.jar;%ORACLE_HOME%\jdbc\lib\ojdbc7.jar;%ORACLE_HOME%\jdbc\lib\ojdbc6.jar;%CPFILE%
 
REM Have you downloaded a specific jre and dropped it into SQL_HOME as jre
IF NOT EXIST "%SQL_HOME%\jre" GOTO OK
  SET JAVA_HOME=%SQL_HOME%\jre\
  SET PATH=%JAVA_HOME%bin;%PATH%
:OK
 
IF NOT DEFINED JAVA_HOME (
  java %JAVA_OPTS% %STD_ARGS% %DEBUG% -cp "%CPFILE%" oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli %*
  GOTO EXIT
)
REM if java home is set, then this is where we use it.
"%JAVA_HOME%\bin\java" %JAVA_OPTS% %STD_ARGS% %DEBUG% -cp "%CPFILE%" oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli %*
:EXIT
endlocal
data4jira.sql - настройки для подключения

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CONNECT exch_jira/exch@alfa/alfa
ALTER SESSION SET NLS_NUMERIC_CHARACTERS=". ";
SET echo off
SET feedback off
SET term off
SET timing off
SET pause off
SET trimspool ON
SET sqlformat csv
spool data4jira_tel.csv
SELECT id, fio, otd, podr, phone, phonegr, korp, komn FROM jira_view;
spool off
exit
import_alfa.bat - батник, который должен запускаться (но не запускается) подключаюсь к другой БД (mysql)

Windows Batch file
1
2
@echo off
"C:\Program Files\mysql\MySQL Server 5.6\bin\mysql.exe" --user=root --password=qwe1331 < import_alfa.sql
import_alfa.sql - чистка таблицы и заполнение новыми данными из .csv

MySQL
1
2
3
4
5
6
7
use alfa;
DELETE FROM data4jira_tel;
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/sqlcl4jira/bin/data4jira_tel.csv'
INTO TABLE data4jira_tel
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES STARTING BY '' TERMINATED BY '\r\n'
IGNORE 1 LINES;
Отдельно все работает, если запускать data4jira.cmd и import_alfa.bat , а последовательность не могу выстроить! Помогите!
Ответ: пробовал без start и с кавычками - один результат.

* вычитал :
"Вызов одного пакетного файла из другого не возвращает управление вызывающему - это такое goto.
Вызов пакетного файла с возвратом в вызывающий пакетный файл требует использования встроенной команды call."

т.е. необходим call? как его мне применить?

Добавлено через 45 минут
Решение, при котором все заработало (возможно и неграмотное, но придерживаюсь теории "работает - нетрогай")

создал еще один .cmd

Windows Batch file
1
2
call data4jira.cmd
call import_alfa.bat
Вопрос: Ошибка при проверке запущенного процесса через bat файл

Здравствуйте, помогите пожалуйста исправить BAT файл.
Данный батник осуществляет проверку, если запущен taskmgr.exe тогда calc64.exe, "или calc32 зависит от разрядности системы" закрывается, после закрытия Диспетчера задач программа calc64.exe запускается заново.

Проблема заключается в следующем:
В Windows 7 Диспетчер задач пишется c маленькой буквы taskmgr.exe "всё работает отлично" !

В Windows 8, 8.1, 10 Диспетчер задач пишется c заглавной буквы Taskmgr.exe , проблема в том, что переменная %EXEQ% не срабатывает, и на Windows 8, 81, 10 ничего не происходит.

Если "set EXE=taskmgr.exe" с "set EXEQ=Taskmgr.exe" поменять местами, то на Windows 8, 8.1, 10 всё работает отлично, но тогда в Windows 7 ничего не работает!

Помогите пожалуйста исправить ошибку.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@echo off
SETLOCAL EnableExtensions
 
:start
set EXE=taskmgr.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE%% goto Found
goto NotFound
 
set EXEQ=Taskmgr.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXEQ%"') DO IF %%x == %EXEQ% goto Found
goto NotFound
 
:NotFound
timeout /t 1 /nobreak
cls
goto checkMINE
 
:Found
taskkill /F /IM calc32.exe
taskkill /F /IM calc64.exe
timeout /t 1 /nobreak
cls
goto start
 
:checkMINE
set prog=calc32.exe
set prog1=calc64.exe
 
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %prog%"') DO IF %%x == %prog% goto MineON
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %prog1%"') DO IF %%x == %prog1% goto MineON
goto MineOFF
 
:MineON
CLS
goto start
 
:MineOFF
start d:\shared\calc.vbs
goto start
Ответ: Спасибо, я уже разобрался, всё работает нормально.
Вопрос: Во время работы, не зависимо от запущенных процессов система полностью зависает и перестает реагировать

На компьютере появилась странная проблема: во время работы, не зависимо от запущенных процессов система полностью зависает и перестает реагировать на любые действия, помогает только экстренная перезагрузка(5-6 сек. кнопка выключения). ОС чистая, стоит только winrar и apache. Все температуры в норме. Что можно с этим сделать?
Ответ: Панель упр. - Система - Доп. параметры - вкладка "Дополнительно - раздел "Загрузки и восстановление" (Параметры) - Отказ системы:
+ Записать в журнал
- Выполнить авт. перезагрузку
+ Малый дамп памяти
(ОК)

Диспетчер задач - вкладка "Процессы" - (выбрать процесс) Создать файл дампа памяти
Drive:\Users\UserName\AppData\Local\Temp

И изучать эти дампы.

(У меня подобное было из-за конфликта драйверов звуковой карты Asus, - пришлось на время отказаться от нее, а потом они выпустили исправленный патч)
Вопрос: Проверка наличия запущенного процесса cmd.exe по имени его окна

Очень нужна ваша помощь!
Суть: необходимо в БАТнике провести проверку на предмет запущенного приложения по имени окна командной строки, т.е. не по названию процесса.exe. Далее необходимо выполнять два действия в зависимости от результата: 1) Приложение запущено -> Продолжаем непрерывную проверку на предмет исполнения данного приложения; 2) Приложение не запущено -> Производим запуск и продолжаем непрерывную проверку.
Много информации перелопатил уже, ничего не помогло. В основном предлагаются решения посредством "tasklist | find "process.exe", или "tasklist /FI "IMAGENAME eq process.exe" - все это не подходит, ибо необходимо проводить поиск при нескольких запущенных CMD, но с определенным WindowTitle (попросту - именем окна).
Ответ: Neerdex, tasklist не устанавливает errorlevel (ИМХО + тест), попробуйте так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
 
:start
title ServerCheck
echo Checking...
set "isRun="
for /f "tokens=9 delims=," %%t in ('tasklist /FI "WINDOWTITLE eq RustServer" /nh /v /fo csv') do set "isRun=%%~t"
if NOT defined isRun goto NoRecord
echo Result: Process found
pause
goto start
 
:NoRecord
echo Result: Process not found. Starting server...
start /wait scriptstart.bat
pause
goto start
Вопрос: Завершение всех запущенных процессов из находящегося в текстовом файле списка запрещенных к запуску процессов

пожалуйста помогите написать батник.
Задать в текстовом файле список процессов, запрещенных к запуску. Создать командный файл, завершающий все запущенные процессы из списка.
Ответ:
Windows Batch file
1
2
3
@echo off
for /f %%a in ('tasklist^|findstr/g:"zapr_proc.txt"') do taskkill /im %%a /t /f
pause>nul
.

Добавлено через 56 секунд
В txt, например:
Code
1
2
calc.exe
AkelPad.exe
Вопрос: Как сделать чтобы после первого запуска батника например создались файлы. когда будет второй

Как сделать чтобы после первого запуска батника например создались файлы. когда будет второй и дальше запуск чтобы не создавались эти файлы опять? срочно подскажите(
Ответ: как то так.

Добавлено через 56 секунд

Не по теме:

Сообщение от Dima14011
СПАСИБО! Я Разобрался!!
вот и славненько.

Вопрос: Отловить запущенный процесс по имени, узнать путь и перейти туда

задача: через .cmd или .bat отлавливать запущенный процесс по его имени; узнавать путь по которому он расположен; переходить туда, выполнять определенную работу в последующей папке; и снова возвращаться в то место откуда был запущен процесс.

имеется код, который находит путь до запущенного процесса по его названию
взят отсюда:
Код Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@echo off
Setlocal
 
::Получить PID, Path, Parameters по имени процесса
set ProcName=calc.exe
Call :GetProcessInfo "" "%ProcName%" ProcPath ProcParam PID
 
::Получить Name, Path, Parameters по PID процесса
::set PID=5000
::Call :GetProcessInfo "%PID%" "" ProcPath ProcParam ProcName
 
::Получить Path, Parameters по имени процесса и его PID
::set ProcName=calc.exe
::set PID=5000
::Call :GetProcessInfo "%PID%" "%ProcName%" ProcPath ProcParam
 
Echo Process Name = %ProcName%
Echo PID = %PID%
Echo Path = %ProcPath%
Echo Parameters = %ProcParam%
Echo.
pause
goto :eof
 
 
:GetProcessInfo %1-Proccess_PID %2-Process_Name %3-var.Process_Path %4-var.Process_Parameters %5-var.Optional-PID_or_Name
Setlocal EnableDelayedExpansion
::Making Query
if "%~1" neq "" Set Query=ProcessID^^=%~1
if "%~2" neq "" Set Query=Name^^="%~2"
if "%~1" neq "" if "%~2" neq "" Set Query=^^(ProcessID^^=%~1 and name^^="%~2"^^)
if "%~1"=="" if "%~2"=="" Echo Wrong Query. Must be at least 1 parameter %%1 or %%2.& Exit /B 1
for /f "tokens=1* delims==" %%A in (
'WMIC path win32_process WHERE %Query% GET "CommandLine"^,"ExecutablePath"^,"Caption"^,"Handle" /value^|findstr /BC:"CommandLine" /C:"ExecutablePath" /C:"Caption" /C:"Handle"') do (
if "%%A"=="CommandLine" Set "ProcParse=%%B"
if "%%A"=="ExecutablePath" Set "ProcessPath=%%~dpB"
if "%%A"=="Caption" Set "ProcName=%%B"
if "%%A"=="Handle" Set "PID=%%B"
)
::Parse Parameters
Set /A n=0& Set Param=
for %%A in (%ProcParse%) do Set /A n+=1& if !n! neq 1 (Set "Param=!Param!%%A ")
EndLocal& (
if "%ProcessPath%" neq "" Set "%~3=%ProcessPath:~0,-1%"
if "%Param%" neq "" Set "%~4=%Param:~0,-1%"
if "%~5" neq "" if "%~1"=="" (set "%~5=%PID%") else (if "%~2"=="" set "%~5=%ProcName%")
)
Exit /B 0
мне нужно, чтобы путь до запущенного файла, записывался в переменную, и я мог её вызывать, поможете реализовать?
или может быть у кого то есть иной вариант с той же функцией, для решения задачи?
Ответ: уже сам понял решение и нелепость своего вопроса, можно закрывать.
Вопрос: Передача текста в запущенный процесс

Добрый день, уважаемые форумчане! Помогите, пожалуйста с решением данной задачи на VBScript. Полное задание:
Кликните здесь для просмотра всего текста
Создайте программу, которая позволяет запросить у пользователя адрес интернет ресурса. Далее программа должна запускать программу Ping.exe и передавать в запущенный процесс введенный пользователем адрес ресурса. Результат выполнения команды Ping должен быть сохранен в текстовом файле. Зная структуру команды Ping, определить доступность ресурса и записать результат в конец фала («ресурс доступен» или «ресурс не доступен»).


С созданием программы, запросом и запуском, я, допустим разобралась:

Visual Basic
1
2
3
4
5
6
dim site
site = InputBox("Введите адрес интернет-ресурса", "Сайт", "http://google.com")
site.Run
 
set tet=wscript.createobject("Wscript.Shell")
set prog = tet.exec ("C:\windows\system32\ping.exe -t ")
И то не уверена в последней строчке. Первая часть программы работает на ура, но после нажатия кнопки "ОК" вылетает ошибка, видимо программа просто не может подключиться к гуглу, она и не должна, а должна в файл записывать. Вот тут я и не знаю, что делать, не понимаю, как именно занести этот адрес в файл. Нужно использовать структуру Ping'a, я практически наобум выбрала t...
Там, откуда я брала это задание, толковых методических указаний нет вообще, поэтому после почти 6 часов безуспешных скитаний, обращаюсь к вам.
Ответ:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
On Error Resume Next
Dim input : input = InputBox("Укажите URL для пинга:", "Ping")
If input = "" Then
  MsgBox "Пустое значение недопустимо.", 16, "Ошибка"
  WScript.Quit(1)
End If
 
With CreateObject("WScript.Shell")
  Dim run : Set run = .Exec("cmd /q /k echo off")
  
  With run.StdIn
    .WriteLine "ping -n 10 " & input & " | findstr /irc:""%"""
    .WriteLine "exit"
  End With
  
  Dim rex : Set rex = New RegExp
  rex.Pattern = "\d+\%"
  rex.IgnoreCase = True
  Dim res : Set res = rex.Execute(run.StdOut.ReadAll)
  
  MsgBox "Количество потерь при пинге " & input & _
    " составляет " & res(0).Value & ".", 64, "Результат"
End With