PDA

Показать полную графическую версию : [решено] Батник просто закрывается


Darkar25
29-09-2017, 22:36
что я делаю не так?
setlocal enableextensions enabledelayedexpansion
@Echo OFF
set /A "VAR=8" //Задаём проверяемую переменную
set /A "CHECK=0" //задаём проверяющюю перменную
:DLINACHECK //начало цикла проверки
set /A "CHECK+=1" //увеличиваем проверяющюю переменную на 1
if "!VAR!"=="!CHECK!" (goto END) else if "!CHECK!"="10" (goto ENDEND) else goto DLINACHECK //проверяем,если проверяемая переменная равна проверяющей то идти к успешному концу,иначе проверить равна ли проверяющая переменная 10-ти если равна идти к неудачному концу иначе идти к началу цикла проверки
:END //удачный конец
Echo FOUND
pause
:ENDEND //Неудачный конец
echo NOT FOUND
pause
endlocal
комментарии писал уже на форуме так-что не кричите на меня что типо изза коментов не робит батник...
при запуске батника он просто закрывается...
суть:пытаюсь на цикле реализовать проверку на длину содержимого переменной...да,я знаю,похожая тема от меня уже была...там Iska предлогал более короткий вариант но я так и не допер как им пользоваться))
либо я разучился писать батники либо не стоило смотреть 11 гайдов по C# подряд в режиме марафона...

Iska
29-09-2017, 23:03
комментарии писал уже на форуме так-что не кричите на меня что типо изза коментов не робит батник... »
И тем не менее:
C:\Мои проекты\0119>setlocal enableextensions enabledelayedexpansion
Непредвиденное появление: ="10".
Берётесь писать комментарии — для них есть REM.

да,я знаю,похожая тема от меня уже была...там Iska предлогал более короткий вариант но я так и не допер как им пользоваться)) »
Спрашивайте, не стесняйтесь. Только там спрашивайте, не здесь.

Там мы проверяли длину строки. А здесь что Вы хотите сделать?

либо не стоило смотреть 11 гайдов по C# подряд в режиме марафона... »
Не стоило. Лучше взять книжку страниц на тысячи полторы.

sioyong
29-09-2017, 23:13
Iska, Замечал много где пишут такие точки :: это тоже коментарий, где про этом ожно почитать?

Darkar25
29-09-2017, 23:18
Цитата Darkar25:
либо не стоило смотреть 11 гайдов по C# подряд в режиме марафона... »
Не стоило. Лучше взять книжку страниц на тысячи полторы. »
не...я имею виду что это как в школе...ты проучился среднюю школу пошел в старшую и ты учишься и чему-то даже смог научиться но вот вспомнить чему тебя учили в средней школе уже не можешь...
И тем не менее:
Цитата:
Код:
C:\Мои проекты\0119>setlocal enableextensions enabledelayedexpansion
Непредвиденное появление: ="10". »
а вот сейчас тот момент когда я понимаю что забыл поставить еще одно равно)))
теперь все норм...

Там мы проверяли длину строки. А здесь что Вы хотите сделать? »
примерно тоже самое...
VAR- это переменная которая получается при вычислении длины строки...
CHECK- это максимальное и одновременно минимальное число символов которое должно быть в строке
как работает CHECK?
сначала ей задается число на 1 меньше минимального числа символов в цикле ей зачисляется по 1 очку каждый прокрут...если переменная CHECK доходит до максимального кол-ва символов цикл прекращается и выводится сообщение с ошибкой(запланированной)...

Iska
29-09-2017, 23:47
Iska, Замечал много где пишут такие точки :: это тоже коментарий, где про этом ожно почитать? »
Это ни разу не комментарий. Двоеточие — это метка. Два двоеточия подряд — ошибочная метка. Так делать не следует. Некоторые несознательные личности ;) пользуются тем, что интерпретатор команд не обрывает исполнение пакетного файла на месте таких ошибочных меток и даже не сообщает об ошибке.

примерно тоже самое...
VAR- это переменная которая получается при вычислении длины строки... »
Не надо вычислять длину строки. Я же уже показал, как проверять длину строки на допустимые пределы в той теме: CMD/BAT - числовая переменная больше числа или нет (http://forum.oszone.net/thread-329927.html).

sioyong
29-09-2017, 23:56
Iska, Что такое метка, для чего она? Ч ем это плохо? Iska, Я в ком. строке ввожу /? там ничего про это не написано. где можно почитать? Извините если не в тему.

Iska
30-09-2017, 02:16
Iska, Что такое метка, для чего она? »
Место в пакетном файле, на которое можно передать управление посредством goto или call.

Ч ем это плохо? »
Тем, что это не комментарий.

где можно почитать? »
goto /?
call /?
Download Windows Command Reference from Official Microsoft Download Center (https://www.microsoft.com/en-us/download/details.aspx?id=2632)

alpap
30-09-2017, 02:33
sioyong,
попробуйте поставить во второй строке комментария вместо "rem" - "::" и увидите что код начнет захлопываться, поэтому никто не использует "::" в качестве начала комментария в for или можно взять за привычку не использовать вообще нигде

@echo off
title Spravka &: Еще и такой комментарий используют некоторые
for %%a in (goto call) do (
:: Справка по командам с меткой перехода
%%a /?
rem Справка по командам с меткой перехода
)
pause

alpap
30-09-2017, 02:57
еще добавлю. Вот здесь видна разница между меткой и комментарием:

@echo off
set "s=slovo"
call :%s%
pause& exit

::slovo
echo Переход на эту метку не будет произведен
exit /b

:slovo
echo Переход на эту метку произведен
exit /b


Получается перейти на строку комментария нельзя, но найти строку комментария можно:

@echo off
set "s=slovo"
<"%~f0" find "::%s%" && call :%s%
pause& exit

::slovo
echo Переход на эту метку не будет произведен
exit /b

:slovo
echo Переход на эту метку произведен
exit /b

Darkar25
30-09-2017, 13:32
Не надо вычислять длину строки. »
именно в этом коде нет.
я планирую его вставить в батник где вычисляется длина и вбивается в переменную,после чего она проверяется этим кодом
:DLINACHECK
set /A "CHECK+=1"
if "!VAR!"=="!CHECK!" (goto END) else if "!CHECK!"=="10" (goto ENDEND) else goto DLINACHECK
после чего если число входит в 1-10(в батнике в который я вставляю эту проверку 8-62) то оно идет дальше иначе возвращает к вводу строки и последующему вычислению длины и проверки...и так пока не будет введена строка корректной длины

sioyong
01-10-2017, 00:26
Iska, Про goto не знал спасибо.
alpap, Спасибо. Про title знаю, если сделать так>>
title "Spravka &: Еще и такой комментарий используют некоторые"
отработает норм.
alpap, За примеры спасибо, теперь начинаю понимать.
Iska, alpap, Спасибо братки, очень помогли.




© OSzone.net 2001-2012