Использование CALL для меток в пакетном скрипте - PullRequest
12 голосов
/ 18 июля 2011

При использовании команды CALL для вызова метки в пакетном скрипте, и вы заканчиваете подпрограмму GOTO: eof, что происходит оттуда? Возвращается ли он туда, где находится подпрограмма CALL? Или оно продолжается после определения местоположения сценария вызова?

Например:

ECHO It's for my college fund.
CALL :OMGSUB
ECHO *runs away and cries like a little girl*

:OMGSUB
ECHO Your mom goes to college.
GOTO:eof

ECHO *picks up jewelry box*

После GOTO: какая строка будет эхом следующей?

Ответы [ 2 ]

10 голосов
/ 18 июля 2011

Почему бы просто не запустить его и убедиться в этом?Я сохранил ваш сценарий в командном файле с именем foo.bat и изменил. Ваша мама поступает в колледж, чтобы иметь echo впереди.

C:\temp>foo

C:\temp>ECHO It's for my college fund.
It's for my college fund.

C:\temp>CALL :OMGSUB

C:\temp>echo Your mom goes to college.
Your mom goes to college.

C:\temp>GOTO:eof

C:\temp>ECHO *runs away and cries like a little girl*
*runs away and cries like a little girl*

C:\temp>echo Your mom goes to college.
Your mom goes to college.

C:\temp>GOTO:eof

C:\temp>

Так что легко увидеть это после OMGSUB вызывается, это

  1. Идет в конец файла.
  2. Затем он возвращается к строке справа после CALL :OMGSUB и повторяет строку "убегает"
  3. Затем он повторяет строку «Твоя мама» снова
  4. Идет в конец файла и завершается
  5. Эхо поднимает окно для драгоценностей линия никогда не достигается1020 *
0 голосов
/ 08 июля 2015

goto: eof завершает скрипт OMGSUB в вашем командном файле.поэтому

*runs away and cries like a little girl*

будет эхом следующего.

...