Кто знает как писать командные файлы (*. bat и *.cmd)
Обьясните как написать программу
1) Создать командный файл, который будет помогать в проведении метеосводок. При вызове командного файла указать кодовое слово: "снег", "дождь", "солнце". Если кодовое слово "снег", то вывести сообщение, что погода будет морозная от -15 до -20. Если кодовое слово "дождь", то погода будет слякотная температура около 0. Если кодовое слово солнце, на улице будет солнечно температура +20. Если параметр не указан, то вывести: "Метеорология бессильна".
Вот мой пример написания программы
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF -%1=-SNEG GOTO I
IF -%1=-DOJD GOTO P
IF -%1=-SOLNCE GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
pause
:exit
НО ПОЧЕМУ ТО ПРИ ЗАПУСКЕ ПРОСТО ЗАПУСКАЕТСЯ И ВЫЛЕТАЕТ СРАЗУ
Раздел: Домашние задания, последний комментарий: 17.10.2011 18:48 Вопрос закрыт автором
@ECHO OFF
REM
CLS
ECHO KAKAYA SEYCHAS POGODA?
pause
:I
ECHO TEMPERATURA BUDET OT
ECHO "-15 DO -20"
pause
:P
ECHO TEMPERATURA BUDET
ECHO "OKOLO 0"
pause
:S
ECHO TEMPERATURA BUDET
ECHO "+20"
pause
ECHO KONEC
:exit
Смысл отключать все сообщения? Вам же нужно что-то вывести на экран! Удалите тогда эту строчку. Попробуйте после каждой (!) строчки поставить pause, так можно будет определить место вылета батника.
Вы неправильно используете If
вместо:
if -%1=-SNEG GOTO I
пишем:
if "%1"=="SNEG" GOTO I
==
Если исправить это, то код будет такой:
===
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
pause
:exit
===
Проверил,у меня работает
Добавлено спустя 02 минуты 31 секунду
Отключено только эхо, вывод сообщений этой командой не отключается. Не зная таких основ лучше не лезть
Смысл отключать все сообщения? Вам же нужно что-то вывести на экран! Удалите тогда эту строчку. Попробуйте после каждой (!) строчки поставить pause, так можно будет определить место вылета батника.
Поставил паузу после каждой строки
появилось сообшение "Непредвиденное появление =-SNEG"
Добавлено спустя 19 минут 47 секунд
Вы неправильно используете If
вместо:
if -%1=-SNEG GOTO I
пишем:
if "%1"=="SNEG" GOTO I
==
Если исправить это, то код будет такой:
===
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
pause
:exit
===
Проверил,у меня работает
Добавлено спустя 02 минуты 31 секунду
@ECHO OFF
Смысл отключать все сообщения? Вам же нужно что-то вывести на экран! Удалите тогда эту строчку. Попробуйте после каждой (!) строчки поставить pause, так можно будет определить место вылета батника.
Отключено только эхо, вывод сообщений этой командой не отключается. Не зная таких основ лучше не лезть
Скопировал один в один ваш предложенный текст программы сохранил его в формате bat, но при запуске он просто загружаеться и сразу отключаеться
Смысл отключать все сообщения? Вам же нужно что-то вывести на экран! Удалите тогда эту строчку. Попробуйте после каждой (!) строчки поставить pause, так можно будет определить место вылета батника.
Поставил паузу после каждой строки
появилось сообшение "Непредвиденное появление =-SNEG"
Добавлено спустя 19 минут 47 секунд
Вы неправильно используете If
вместо:
if -%1=-SNEG GOTO I
пишем:
if "%1"=="SNEG" GOTO I
==
Если исправить это, то код будет такой:
===
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
pause
:exit
===
Проверил,у меня работает
Добавлено спустя 02 минуты 31 секунду
@ECHO OFF
Смысл отключать все сообщения? Вам же нужно что-то вывести на экран! Удалите тогда эту строчку. Попробуйте после каждой (!) строчки поставить pause, так можно будет определить место вылета батника.
Отключено только эхо, вывод сообщений этой командой не отключается. Не зная таких основ лучше не лезть
Скопировал один в один ваш предложенный текст программы сохранил его в формате bat, но при запуске он просто загружаеться и сразу отключаеться
Исправленный код:
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
:exit
pause
Добавлено спустя 03 минуты 54 секунды
Вы неправильно используете If
вместо:
if -%1=-SNEG GOTO I
пишем:
if "%1"=="SNEG" GOTO I
==
Если исправить это, то код будет такой:
===
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
pause
:exit
===
Проверил,у меня работает
Добавлено спустя 02 минуты 31 секунду
@ECHO OFF
Смысл отключать все сообщения? Вам же нужно что-то вывести на экран! Удалите тогда эту строчку. Попробуйте после каждой (!) строчки поставить pause, так можно будет определить место вылета батника.
Отключено только эхо, вывод сообщений этой командой не отключается. Не зная таких основ лучше не лезть
Я конечно не считаю себя специалистом по командным файлам, но немного с ними работал, поэтому и даю совет. Насчёт вашего кода: после выполнения каждой группы кроме последней вы пишете GOTO EXIT, тогда как после :exit не стоит пауза, соответственно батник закрывается ничего не отобразив.
Исправленный код:
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
:exit
pause
Исправленный код:
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
:exit
pause
Это тоже не работает, сами проверьте
1.Это работает, только что проверил.
2.Убедился на опыте, что регистр букв параметра имеет значение. DOJD работает, dojd нет.
3.Чуть доработанный вариант:
@ECHO OFF
ECHO Meteqsvodka
REM KAKAYA SEYCHAS POGODA
IF "%1"=="SNEG" GOTO I
IF "%1"=="DOJD" GOTO P
IF "%1"=="SOLNCE" GOTO S
GOTO EXIT
:I
REM TEMPERATURA BUDET OT
ECHO -15 DO -20
GOTO EXIT
:P
REM TEMPERATURA BUDET
ECHO OKOLO 0
GOTO EXIT
:S
REM TEMPERATURA BUDET
ECHO +20
GOTO EXIT
REM KONEC
:exit
pause
exit