Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380

Выход из for

14.06.2012, 09:07. Показов 9576. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть for который проверяет структуру каталогов.

В то время когда происходит проверка заданной структуры каталогов, есть метка и если по этой метке call :fast_stop условие истинно необходимо выйти из for и попасть на метку GOTO END после чего произойдет выход в основной батник и будет выполнятся другой алгоритм.

Сейчас пока в директориях есть файл он проверяет и не останавливается по условию if /i !stop! == 1

кусок кода
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
setlocal enabledelayedexpansion
 
::начинаем проверку всех директорий 
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,GOSB,OPERU,Vsem_OSB) DO (
 
if not exist "%put%\%thePATH%\OUT\OSB\%%a\" md "%put%\%thePATH%\OUT\OSB\%%a\"
 
rem непосредственно директория обработки
for %%b in ("%put%\%thePATH%\OUT\OSB\%%a\*.*") do (
 
rem проверка выполнения условия
call :fast_stop
 
echo Значение перехода по метке равно !stop!
pause
rem если условие истинно необходимо перейти корректно на GOTO END
if /i !stop! == 1 (
exit /b
goto 111
)
 
set file_ext=%%~xb
set file_name=%%~nb
set file_size=%%~zb
set file_path=%%~dpb
set file_fullname=%%b
 
::запоминаем параметры файла и переходим в основную функцию обработки
call :main
)
)
:111
GOTO END
rem здесь выход из батника.
 
 
 
 
:fast_stop
rem echo on 
 
rem  Формирование транспортных пакетов высокого приоритет
SET stop=0
dir /a-d /b "E:\OTDEL\060\OUT\TRPACKS\D00" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\183\OUT\TRPACKS\G00" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\192\OUT\TRPACKS\R00" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\354\OUT\TRPACKS\097" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\354\OUT\TRPACKS\N00" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\192\OUT\TRPACKS\S00" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\260\OUT\TRPACKS\T00" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\164\OUT\TRPACKS\090" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\363\OUT\TRPACKS\092" 1>nul 2>nul  && ( SET stop=1 )
dir /a-d /b "E:\OTDEL\356\OUT\TRPACKS\M00" 1>nul 2>nul  && ( SET stop=1 )
 
 
EXIT /b
 
 
 
:END
rem здесь происходит еще кое какая обработка
exit /b
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2012, 09:07
Ответы с готовыми решениями:

Угадай, где выход! (Поиск листа бинарного дерева, содержащего выход из лабиринта)
Никогда раньше не решал задачи на деревья, но вот решил начать. Самая большая проблема в том, что я никак не могу понять примеры тестов...

Текстовый редактор. Выход с сохранением. Выход без сохранения.
привет! помогите, плиз: Создайте простейший текстовый редактор, в котором при выходе содержимое объекта Memo будет сохраняться в файл...

События сессии пользователя (вход/выход/блокировка/разблокировка/сон/выход из сна/выключение/перезапуск)
Добрый день. Мне нужно слушать эти события (указаны в заголовке) в реальном времени для логирования. Можно слушать разные события разными...

24
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.07.2012, 00:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от wildwolf007 Посмотреть сообщение
А кавычки так же получается можно использовать ?
Получается, что кавычки сравниваются сами с собой, а то что внутри и есть сами пироги, а иначе с пробелами вначале или конце переменной Вы сравнить бы не смогли (они в открытом виде урезаются при сравнении). Также кавычки всегда используются, если Вы задаете путь к папке, в которой есть пробелы, или когда есть такая вероятность, что цикл вернет Вам имена с пробелами, иначе следующая команда пример пробел как разделение аргументов.

По поводу Setlocal enabledelayedexpansion не совсем. Посмотрите примеры:
Создание каталогов с именем из переменной
Вот еще:
Bash
1
2
3
4
5
6
7
8
@echo off
set /a var=1
Setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do (
  set /a var=!var!+1
  echo. %var%   !var!
)
pause>nul
Цитата Сообщение от wildwolf007 Посмотреть сообщение
Хотя когда идет обработка имен файлов данная запись Setlocal enabledelayedexpansion мешает в обработке и поэтому не очень хотелось бы ее использовать ...
Интересно увидеть, где она мешает...
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
20.07.2012, 09:00  [ТС]
Мешает тогда когда в именах файлов есть пробел или какие-нибудь нехорошие символы типа скобок.
типа такого " Значения имени файла с пробелами ) (111 ;%№))))).png" идет в обработке FOR имя файла переводится в переменную для дальнейшей обработки.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2012, 10:21
В таком случае при получении значения в цикле следует обрамлять переменную в кавычки:
"%%i". Кстати Setlocal на это не влияет. А при необходимости задания констант значений имен файлов со знаками !, их можно объявить в самом начале скрипта. Кроме того спец. символы можно экранировать, поставив сразу перед ними знак ^
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
27.07.2012, 15:04
Часть сообщений выделено в отдельную тему: Знак восклицания (!) в именах файлов внутри цикла при Setlocal EnableDelayedExpansion (достигнут максимально возможный уровень рекурсии)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.07.2012, 14:15
Т.е. на данном этапе остановились на вопросе, как выйти из цикла For
после изменения переменной в вызываемой по Call подпрограмме,
при этом не используя команду Setlocal EnableDelayedExpansion.

Предлагаю отказаться от SetLocal и использовать что-нибуть помимо локальных переменных, например:
1) глобальную переменную.
2) запись во внешний файл.
3) запись в реестр.

И соответственно в цикле проверять их.

О глобальной переменной я писал здесь: Как вернуть значение переменной из локали в глобальную область?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2012, 14:15

Как сделать выход из приложения по кнопке выход
Привет! Имеется 3 активити. А1 - запускается при запуске приложения(анимация) А2 - меню ( с кнопкой выход) А3 - мейн...

Выход из While
Как выйти из цикла While? То есть если у меня например такая схема: while q>-1 do inc(q); Как мне выйти из него когда например...

выход
Здравствуйте. Помогите пожалуйста разобраться. Не могу понять как сделать при выборе из меню файл-выход сообщение с вопросом – вы...

Выход из <do-while>
Вот цикл: int Ni1=1, i1=1; float Sinc1; do { Sinc1=pow(flX,i1)/(i1+2); S1=S1+Sinc1; i1=i1+4; Ni1=Ni1+2; ...

Выход
как прервать процедуру и вывести сообщение if (a)&lt;&gt;0 then x:=b/a else exit; процедуру прерывает но можно ли вывести сообщение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru