Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Пакетные файлы (bat, cmd)


AlexSAN

Рекомендуемые сообщения

После очередной переустановки XP Prof появилась непонятная проблема:

в cmd (bat)-файле, содержащем несколько команд "pause", эти самые команды выполняются через одну, т.е. 1-я(3, 5,...-я) выполняется как положено (пишет "для продолжения нажмите любую клавишу..." и, собственно, ждёт), а вот 2-я(4, 6,...-я) только пишет "для продолжения нажмите любую клавишу..." и не фига НЕждёт. Чтобы это могло быть, может кто знает?

Ссылка на комментарий
Поделиться на другие сайты

Не знаю, у меня вроде бы всё работало. Но хотя, по понятным причинам, то это возможно потому что изначально в ХР приспособливалась для работы без консольных приложений, вот они все там и глючат...

Там даже сеанса МС-Доса как таково нет, то есть загрузиться в досе нельзя.

Ссылка на комментарий
Поделиться на другие сайты

Не знаю, у меня вроде бы всё работало. Но хотя, по понятным причинам, то это возможно потому что изначально в ХР приспособливалась для работы без консольных приложений, вот они все там и глючат...

Там даже сеанса МС-Доса как таково нет, то есть загрузиться в досе нельзя.

Ты путаешь консольные приложения, приложения под DOS и командные сценарии...

Приложения под DOS - приложения которые запускаться могут под DOS, WinXP же это имулирует (т.к. она не DOS) и запускает их так, как будто они консольные.

Консольные приложения - приложения, написанные под Win, но БЕЗ использования Win GUI.

Командные сценарии - *.bat *.cmd файлы, содержащие набор коанд операционной системе и в полной мере её поддерживаются.

Кстати, DOS он не один. Есть PC-DOS, MS-DOS и т.д. :)

Ссылка на комментарий
Поделиться на другие сайты

XakTeaM

уменя тоже

всё работало
до переустановки.

Premium

по поводу

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

@echo off | echo пауза 1 | pause | echo пауза 2 | pause и т.д.

P.S. Сегодня (точнее уже вчера) в процессе тестирования очередного пакетника (файла сценария Winows) этот самый pause несколько раз сработал как положено, а потом опять загнулся.

Ссылка на комментарий
Поделиться на другие сайты

Если в смысле текст, то самый произвольный типа

@echo off | echo пауза 1 | pause | echo пауза 2 | pause и т.д.

Во-во :) именно текст, причем желательно не самый произвольный, а тот, который не работает.

Ну судя по приведенному примеру ты слегка перебарщил:) с оператором канала "|". Чтобы твой пример работал, кстати я бы его сделал так:

@echo off

echo пауза 1 && pause && echo пауза 2 && pause

А оператор "|" запускает обе команды по краям, но правая ждет получения выходных данных от левой. У тебя и выдают четные pause в STDOUT, потому что слева echo пауза, она и идет на экран.

Майкрософт про это в хэлпе написал:

Использование оператора канала (|)

Оператор канала «вертикальная линия» (|) забирает выходные данные одной команды (по умолчанию STDOUT) и направляет их на вход другой команды (по умолчанию STDIN). Например, следующая команда сортирует каталог:

dir | sort

В данном примере обе команды запускаются одновременно, но команда sort приостанавливает работу до получения выходных данных команды dir. Команда sort использует выходные данные команды dir в качестве своих входных данных, а затем свои выходные данные отправляет в дескриптор 1 (STDOUT).

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

Изменено пользователем Premium
Ссылка на комментарий
Поделиться на другие сайты

Premium

Хотел как лучше, получилось как всегда... Это "|" не оператор канала, а неудачно выбранный разделитель, чтобы записать команды встрочку и рациональней использовать место в форуме.

На самом деле всё выглядит традиционно:

@echo off

echo пауза 1

и т.д.

Напиши здесь тот батник, который не работает

Батник работает, не работает пауза, а вообще он выглядит примерно так

@echo off

echo Установка критических обновлений Windows XP SP2 ENG

pause

Далее следуют имена файлов обновления c ключами, затем

echo Установка завершена. Сейчас будет выполнена перезагрузка

pause

shutdown /r /t 01

В итоге всё перезагружается безо всякой паузы

Ссылка на комментарий
Поделиться на другие сайты

AlexSAN

Возможно, причина в бета-версии SP2 ?

На моей Windows XP Pro SP1 все работает, как и должно...

По описанию работают только нечетные pause, так, может быть, добавить временно одну pause до устранения проблемы с Windows?

Ссылка на комментарий
Поделиться на другие сайты

AlexSAN

А все равно весь текст батника не напишу здесь, фиг вам всем, да? :ph34r: ;) ;)

Может ты там где-нибудь ключ -z(отмена перезагрузки) забыл указать или еще что. Посмотри здесь http://www.softboard.ru/index.php?showtopic=8559&st=0 эти батники уже обсуждались

Ссылка на комментарий
Поделиться на другие сайты

Тролль

Это не бэта-версия, а набор обновлений с мелкософта и ключики везде нужные стоят.

На самом деле, как говориться, "... ларчик просто открывался...". Чёрт меня дёрнул в качестве "любой клавиши" выбрать стрелку; с любой другой клавишей всё работает нормально, без каких бы то ни было проблем, но стоит только в ответ на просьбу нажать любую клавишу стукануть по любой из четырёх стрелок, как cmd пролетает сразу через две команда pause. Выходит не совсем "любую клавишу" можно нажимать для корректного продолжения.

Ладно, все спасибо за участие, внимание и помощь; так или иначе проблема разрешилась.

P.S. Блин, надо было клавиатуру с кнопкой "Any key" покупать... :D

Добавлено : [mergetime]1091478663[/mergetime]

В смысле "Ладно, всеМ спасибо..."

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...