2012-05-11 3 views
1

Я пишу небольшой скрипт выключения для приложения Java. Я получаю ИДП, а затем попытаться сделать следующее:taskkill: разная консоль поведения против скрипта

taskkill /t /pid !pid! 

Если я бегу команду из консоли (введя его вручную) все работает отлично. Я вижу, что процедура shutdown выполняется в java-консоли, а затем консоль java исчезла. Иногда я вижу, что через несколько секунд окно «не отвечает на запросы». Kill now or wait », но диалог автоматически закрывается, когда программа Java останавливается.

Если я исполняю файл bat с той же командой, я сразу вижу диалог «Процесс не отвечает ...». Я вижу вывод консоли: «процесс был успешно завершен», но консоль java все еще открыта. Он даже не инициировал последовательность выключения.

редактирование: полный пакетный скрипт

@echo off 
setlocal enabledelayedexpansion 
if exist .\lock (
set /p pid=< lock 
taskkill /t /pid !pid! 
) 
+0

Вы должны показать нам пакетный сценарий затем. – adarshr

+0

добавил к вопросу. – Nicolas

ответ

1

В командной строке !pid! обычно не расширяется, а задержка расширение отключается и может быть включено только еу реестра или с cmd /V:on.

Так что в командной строке !pid! останется неизменным и в пакете она будет расширена до содержимого переменной pid.

Редактировать Как показывает правильной команды на CMD линии, команда в пакете должна быть неправильной.

Вы должны добавить эхо после установки/р линии

Echo pid="!pid!" 
+0

уверен. в командной строке я ввел что-то вроде taskkill/pid 1234. – Nicolas

+0

@nicolas Я редактирую ответ – jeb

+0

две команды, которые я запускаю, точно такие же. Вопрос заключается в следующем: возможно ли, что команды, запущенные непосредственно из командной строки, выполняются несколько иначе, чем команды, запускаемые из сценария. Различные настройки тайм-аута, другой поток, .... – Nicolas

 Смежные вопросы

  • Нет связанных вопросов^_^