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

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

Ответить
Настройки темы
CMD/BAT - [решено] Записывается не тот PID

Пользователь


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

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


Изменения
Автор: dima05605
Дата: 17-12-2012
Доброго времени суток, уважаемые форумчане! Только что столкнулся с проблемой, которой вовсе не должно было произойти. В pid.txt записывается не верный PID, то есть у процесса, который запуститься с этого кода, будет совсем другой PID по сравнению с записанным. В exfile.txt лежит файл, который надо запустить, в con_login.txt лежит путь к файлу.
Вот код:

@echo off
:begin
ping -n 2 127.0.0.1 > NUL
if not exist start_server.txt goto :begin else goto :start_server

:start_server

Set file=exfile.txt
For /F "usebackq tokens=* delims=" %%i In ("%file%") Do Set exf=%%i

Set file=con_login.txt
For /F "usebackq tokens=* delims=" %%i In ("%file%") Do Set conlogin=%%i
set conlogin=%conlogin: =%

echo %conlogin%\%exf%

set "wmic=wmic process call create "%conlogin%\%exf%" | findstr "ProcessId""
for /f "tokens=2 delims==;" %%i in ('"%wmic%"') do set "pid=%%i"
del start_server.txt

echo %pid% > pid.txt
goto :begin

Отправлено: 20:50, 17-12-2012

 

Ветеран


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

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


dima05605, Не ясно, соответствует ли "%conlogin%\%exf%" файлу "D:\Test\dima\samp-server.exe" ? Наверное будет правильней:
Код: Выделить весь код
set "wmic=wmic process call create "%conlogin%\%exf%" | findstr "ProcessId""

Отправлено: 21:45, 17-12-2012 | #2



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

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


Пользователь


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

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


Вместо "D:\Test\dima\samp-server.exe" можно написать "%conlogin%\%exf%, но, будет писаться не правильный PID.

Отправлено: 21:51, 17-12-2012 | #3


Ветеран


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

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


dima05605, А start_server.txt откуда берется? Может у тебя просто запускается несколько экземпляров samp-server.exe и ты смотришь не тот PID?

Отправлено: 22:15, 17-12-2012 | #4


Пользователь


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

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


start_server.txt появляется по команде, сам же батник проверяет наличие этого файла. Если существует start_server.txt, значит выполнить действие. Вообще все работает, когда появляется этот txt файл, то запускается samp-server.exe, все вроде бы ок, но в файл pid.txt записывается какой-то левый PID

Врядли чтобы запускалось несколько экземпляров, я даже не могу представить как такое может быть?

Отправлено: 22:19, 17-12-2012 | #5


Ветеран


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

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


Цитата dima05605:
но в файл pid.txt записывается какой-то левый PID »
Сложно сказать. Могу только предположить, если ты запускаешь батник из консоли, то вполне возможно переменная %pid% остается от предыдущего запуска. Проверь в консоли 'set pid' Если так, то после @echo off допиши setlocal:
Код: Выделить весь код
@echo off
setlocal

...
Тогда переменные будут жить только в пределах исполнения этого батника.

Отправлено: 22:31, 17-12-2012 | #6


Пользователь


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

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


setlocal не решил проблему. PID записывается, но не тот, что надо То есть надо чтобы записывался PID дочерней программы, а пишется несуществующий

А ничего что вверху такие вот кракозябры?


Отправлено: 22:54, 17-12-2012 | #7


Пользователь


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

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


И самое интересное это то, что с BAT файлами все ок, PID'ы пишутся правильные и по команде все работает идеально. Вот с ехе не хочет.

Отправлено: 23:12, 17-12-2012 | #8


Ветеран


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

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


Цитата dima05605:
А ничего что вверху такие вот кракозябры? »
Это короткое имя так выглядит. Но интересен путь. Это ведь не «D:\Test\dima\samp-server.exe». Что это — UAC так работает?

Отправлено: 23:23, 17-12-2012 | #9


Ветеран


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

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


А если проосто выполнить:
Код: Выделить весь код
wmic process call create "D:\Test\dima\samp-server.exe"
Что будет в консоли? Ты случаем запускаешь не батник завернутый в exe?

Отправлено: 23:23, 17-12-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Cisco - 2600 - не записывается во флеш-память exo Сетевое оборудование 0 21-10-2011 17:25
Flash - [решено] криво записывается на флешку artem2302 Накопители (SSD, HDD, USB Flash) 1 14-03-2011 15:31
[решено] В элемент Edit записывается только 1978 строк fak1r AutoIt 3 26-05-2010 01:10
[решено] не записывается звуковая дорожка в Steinberg Nuendo3 alfar55 Видео и аудио: обработка и кодирование 17 29-01-2010 20:16
не записывается лог в Event Viewer exo Microsoft Windows NT/2000/2003 11 29-08-2008 16:04




 
Переход