Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/17: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Dragokas
Эксперт WindowsАвтор FAQ
16969 / 7054 / 856
Регистрация: 25.12.2011
Сообщений: 10,868
Записей в блоге: 16
#1

Как запустить Batch-файл? Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает". [Руководство]

24.06.2013, 04:45. Просмотров 3153. Ответов 1
Метки нет (Все метки)

Как запустить Batch-файл?
Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает".


Чтобы увидеть ошибки в синтаксисе, которые приводят к критическому завершению Batch-файла,
необходимо запустить его из CMD.exe (интерпретатора).

Как?
Этап 1. Подготовка:
Если у Вас в скрипте указана директива для скрытия вывода выполняемых команд:
Bash
1
@echo off
Она обычно идет первой строкой в коде.
- Удалите ее, или закомментируйте:
Bash
1
::echo off
иначе будет сложно определить, какая команда вызывает "падение" скрипта или ошибку.

Этап 2. Выполнение скрипта с перенаправлением вывода в файл протокола

Вариант 1. Для систем Windows XP и ниже:

ПУСК -> Выполнить (либо Win + R), вводим CMD, нажимаем {ENTER}

Откроется маленькое черное окно - консоль.
В нем Вы увидите путь к каталогу, в котором будут выполняться команды в данный момент.
Вам нужно перейти в каталог, где расположен бат-файл.
Например, Вам нужно запустить Batch-файл с именем script.cmd, расположенном в папке temp на диске C,
тогда вводим команды:

(ввод каждой строки подтверждаем клавишей {ENTER})

Bash
1
2
cd /D "c:\temp"
script > log.txt
После ввода первой строки Вы увидете на экране приглашение вида:
c:\temp>
что свидетельствует об успешном переходе в каталог c:\temp

Вариант 2. Для систем Windows Vista и выше (переход в папку с батником сразу):

1. Перейдите на уровень выше от каталога, где находится Batch-файл
(иными словами: Вам нужно видеть пиктограмму значка папки, в которой находится Batch-файл)
Если Вы видите перед собой сам Batch-файл, достаточно нажать BackSpace (кнопка "стирания").

2. Наведите указатель мыши на папку с Batch-файлом.
Нажмите и удерживайте кнопку "Shift". Вместе с этим нажмите правую кнопку мыши.

3. Выберите пункт "Открыть окно команд".

Как запустить Batch-файл?  Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает". [Руководство]


Например, Вам нужно запустить Batch-файл с именем script.cmd, расположенном в папке temp на диске C,
тогда вводим команду:

Bash
1
script > log.txt
Нажимаем клавишу {ENTER}

Этап 3. Анализ файла-протокола.

После завершения работы Batch-файла в папке C:\temp будет создан файл log.txt
Передайте его специалистам, либо при наличии достаточного опыта проведите анализ самостоятельно.

Данный файл сохраняется в кодировке OEM-866, поэтому открывать его нужно в соответствующем редакторе: Русский текст в консоли
Как правило, критические ошибки указаны в самом конце протокола и они предваряют команду, которая их вызвала.

Этап 4. (опционально)
Если бат-файл содержит цикл или является очень большим, полезным также будет подготовить лог уже с командой @echo off
Добавьте ее в самое начало кода и повторите всю процедуру.

Альтернатива вызову батника из-под интерпретатора.
В самом начале кода пишем:
Bash
1
Echo. 1>&3 2>&4 3>log.txt 4>&3
и запускаем Batch-файл.
Все команды, выводимые на экран будут сразу перенаправляться в файл.
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 04:45
Ответы с готовыми решениями:

Как сделать "Панель задач" в две строки через реестр или скриптом bat/cmd?
Как сделать Панель задач в две строки... интересует вариант через реестр,...

Запуск служб "Служба доступа к файлам" и "Клиент для сетей Microsoft" с использованием bat- или vbs-файла
Доброе время суток. Подскажите пожалуйста можно ли как нибудь запустить службы...

Как определить, на виртуальной машине ли запущен bat-файл или нет?
Вот, что и нужно, чтобы при запуске бат файла в виртуальной машине выводилось...

Как запустить "explorer.exe" из bat-файла, чтобы сразу открылась нужная папка?
Причем открываемая папка определяется обстоятельствами (не важно, главное что...

Если установлена .NET Framework 4.0, то запустить BAT-файл, если нет, то установить и затем запустить BAT-файл
всем привет! есть такая задачка: определить установлен ли .net на удаленной...

1
Dragokas
Эксперт WindowsАвтор FAQ
16969 / 7054 / 856
Регистрация: 25.12.2011
Сообщений: 10,868
Записей в блоге: 16
07.06.2016, 15:57  [ТС] #2
Перехват ошибки (вывода) консольного окна, запущенного из-под чужого GUI приложения.

Можно выполнить при помощи программы Console Window Interceptor (Автор - Dragokas)

Сфера применения:
Автоматически подключается к любому всплывающему консольному окну и не дает его закрыть по завершению работы (exit).
Перехватывает текст и выводит его в окне формы.

Будет полезен для получения текста консольных приложений, которые нельзя запустить через cmd /c.

Состав: EXE + VB6 src.

Как запустить Batch-файл?  Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает". [Руководство]


-----------------------------------------------------------------------------------------------------------

Пример перехвата ошибки в выводе команды ExecuteFile программы AVZ:

1. Запускаем Console Interceptor.
Выставляем интервал поиска окон в 1 мс.
Нажимаем "Искать консольные окна".

2. Запускаем AVZ. Файл -> Выполнить скрипт:

Pascal
1
2
3
begin
  ExecuteFile('ipconfig', 'flushdns', 1, 0, false);
end.
Запустить. Результат:

Как запустить Batch-файл?  Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает". [Руководство]


В чем ошибка, думаю, сами должны догадаться.

Примечание по ExecuteFile:

Режим (Mode) должен быть обязательно не 0 (видимое окно).
Terminate = false или WaitTime = 0 необязательно выставлять такими.
AVZ в любом случае получит сигнал о завершении работы процесса,
тем не менее консольное окно не закроется, пока к нему подключено в качестве отладчика другое приложение.


Чтобы не повалить перехватчик, необходимо сперва отключиться от консольного окна ("Deattach") кнопкой "Отключиться от окна".
2
Вложения
Тип файла: zip C_Intercept.zip (13.3 Кб, 4 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 15:57

Как создать входящее подключение для VPN через терминал или bat-файл?
Всем привет! Ребат помогите разобраться как создать входящее подключение для...

Как запустить bat-файл в определённое время?
Здравствуйте ! А как запустить bat файл в определенную дату ? Как запустить...

Как запустить BAT-файл от процесса svchost?
Хочу запустить BAT от процесса svchost, что бы когда смотришь в диспетчер задач...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru