Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2021, 21:14   #1
Nikitosium
Новичок
Джуниор
 
Регистрация: 26.12.2021
Сообщений: 1
По умолчанию bat файл

Приветствую. Мучаюсь с лабораторной работой.

Нужно создать bat файл, параметры которого можно задавать как при запуске bat файла, так и в процессе его работы. Файл должен выполнять следующее: указываются фамилии студентов выполняющих работу, если такой студент один вывести, на экран работает один, если двое, то две головы лучше, если больше двух, то работает толпа, если никто не работает, то "где все?".

Пробовал решать задачу разными способами, но все равно не получается, выводит только одно значение.

Код:
cls

@ECHO off

set /p %var%=How many students do the work?

IF "%var%"=="ivanov" GOTO "F1"

IF "%var%"=="ivanov petrov" GOTO "F2"

IF "%var%"=="ivaniv petrov solovev" GOTO "F3"

IF "%var%"=="" GOTO "F4"

:"F1"
ECHO works alone
GOTO exit

:"F2"
ECHO two head are batter
GOTO exit

:"F3"
ECHO the crowd works
GOTO exit

:"F4"
ECHO where is everyone?
GOTO exit

:exit

PAUSE
Nikitosium вне форума Ответить с цитированием
Старый 27.12.2021, 21:53   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Код:
@ECHO off
rem Номера кодовых страниц: 1251 - ANSI  65001 - UTF-8
rem см. правый нижний угол Блокнота
chcp 1251
cls
rem Настройка локали
SETLOCAL ENABLEDELAYEDEXPANSION

rem n - число студентов
rem stud - список студентов
set n=0
set stud='
rem Проверить наличие параметров командной строки
rem Если пусто, то запрашиваем у пользователя
if -%1==- (
:MetUser
rem При создании переменная не погружается в проценты
   echo Для завершения ввода нажмите Enter
   set /p var=Введите ФИО студента: 
   if -!var! NEQ - (
      set stud=!stud! !var!
      set /a n=!n!+1
      set var=
      goto MetUser
   ) else (
      goto Next
   )
) else (
rem Параметры заданы
:MetCMD
rem Если пусто (нет параметра) - далее
   if -%1==- (
      goto Next
   )
   set stud=!stud! %1
   set /a n=!n!+1
   shift /1
   goto MetCMD
)

:Next
rem При выводе удаляем первые два символа
rem ' - одиночная кавычка и пробел
rem echo stud = !stud:~2! n = !n!
if !n! GEQ 3 (
   set n=3
)
echo.
goto Met!n!
:Met0
  echo Где все?
  goto :EOF

:Met1
  echo Работает один студент
  goto Fin

:Met2
  echo Две головы лучше!
  goto Fin

:Met3
   echo Работает толпа
:Fin
   echo Работают - !stud:~2!
Сделай сравнение со своим кодом и поищи в сети пояснения к командам.
1. В команде set имя переменной слева не берётся в проценты. Имя переменной в процентах - это значение.
2. Поскольку используются условные операторы, то используются и круглые скобки. В этом случае актуальные значения переменных будут получаться, если выполнить настройку локали и значения переменных получать через восклицательные знаки (!<имя переменной>!), а не через проценты (%<имя переменной>%)
3. Для завершения скрипта можно, в команде goto, указывать метку конца без её описания (:eof).
4. Метку можно формировать слиянием текста и, например, числа, как сделано в скрипте.
...

PS:
Скрипт запускается в окне командной строки, или через окно "Выполнить" (Win + R) а не кликом мыши.
Кликнуть можно, но тогда сработает только та часть, которая отвечает за запросы к пользователю.
Для срабатывания второй части необходимо задавать параметры.
Например, если имя скрипта my.cmd, и он находится в каталоге c:\abc, то вызов:

> c:\abc\my.cmd Иванов Петров Сидоров

PSS: Русификация. Смотри в нижнем правом углу Блокнота. Там указывается кодировка.
Сохрани файл в нужной кодировке для правильного вывода кирилличного текста:
"Сохранить как ..." и далее выбрать ANSI кодировку в нижней части формы сохранения.

Сделал только потому, что пример заинтересовал, хотя задание нечёткое.
Сделал так, как понял.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows 10/Explorer не хочет запускать bat файл через файл ярлыка KBO Windows 8 26.11.2017 21:16
BAT-файл для работы с группой файлов - скопировать файл в "свою" папку alxi Операционные системы общие вопросы 2 10.02.2017 09:33
надо переписать под bat-файл(файл был взят с Mac) lakrya25 Помощь студентам 6 21.01.2015 14:52
Bat файл Diamand Помощь студентам 3 31.10.2011 14:56