Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
4 / 4 / 2
Регистрация: 23.12.2013
Сообщений: 135
1

Что происходит в данном цикле?

29.02.2016, 08:09. Показов 1256. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобратся есть вот такой батник

Windows Batch file
1
2
3
4
5
6
7
8
9
@Echo Off
 
If "%~1"=="" Echo Неверный синтаксис& Exit /B
If "%~2"=="" Set $N=10& Set $F=%~1
If Not "%~2"=="" Set $N=%~1& Set $F=%~2
If Not Exist "%$F%" Echo Исходный файл не найден& Exit /B
 
For /F %%i In ('Type "%$F%"^|Find /C /V ""') Do Set /A $M=%%i-%$N%
For /F "Tokens=1* Delims=][" %%i In ('Type "%$F%"^|Find /N /V ""') Do If %%i GTR %$M% Echo.%%j
Не понимаю как идет цикл. Обьясните кто может...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.02.2016, 08:09
Ответы с готовыми решениями:

Объясните что происходит в данном коде?
расскажите что происходит в этом коде? *(unsigned int*)&pack = GetCRC16(pack, 13); pack =...

Что происходит в данном отрывке кода?
tmp:=a; a:=a; a:=tmp;

Что выполняется в данном цикле
void removeColumns(Matrix *a, int *xs, int n) { for (int i = 0; i < n-1; i++) { int swapped =...

Описать что происходит в данном коде программы
Надо описать что происходит в данном коде программы(что происходит\делается) по блокам. ПРИМЕР:...

3
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.02.2016, 19:27 2
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Echo On
set "f1=1.txt"
rem set "f2=2.txt"
call :proc "%f1%" "%f2%"
pause
 
:proc 
If "%~1"=="" Echo Неверный синтаксис& Exit /B
If "%~2"=="" Set $N=10& Set $F=%~1
If Not "%~2"=="" Set $N=%~1& Set $F=%~2
If Not Exist "%$F%" Echo Исходный файл не найден& Exit /B
 
For /F %%i In ('Type "%$F%"^|Find /C /V ""') Do Set /A $M=%%i-%$N%
For /F "Tokens=1* Delims=][" %%i In ('Type "%$F%"^|Find /N /V ""') Do If %%i GTR %$M% Echo.%%j
exit /b
В строке 3 один раз так пробовать, как в коде, потом убрать rem (комментарий) и пробовать второй вариант.
Содержимое файла 1.txt любое, но более 11 строк, содержимое файла 2.txt цифры от 1 до 5 с столбик (по одной цифре в строчке). Вот и увидите как это работает.
0
4 / 4 / 2
Регистрация: 23.12.2013
Сообщений: 135
01.03.2016, 11:13  [ТС] 3
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Да я и так разобрался))

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rem Отключаем вывод команд на экран (в том числе и вывод самой команды echo - поэтому и @)
@Echo Off 
 
rem Если первый аргумент, переданный батнику и очищенный от кавычек (символ тильда) отсутствует, то выводит на экран Неверный синтаксис и безусловно завершает батник без завершения cmd.exe
If "%~1"=="" Echo Неверный синтаксис& Exit /B 
 
rem Если второй аргумент, переданный батнику и очищенный от кавычек (символ тильда) отсутствует, то присваивает переменной N значение 10 и безусловно присваивает переменной F значение первого аргумента батника, очищенного от кавычек
If "%~2"=="" Set $N=10& Set $F=%~1 
 
rem Если второй аргумент, переданный батнику и очищенный от кавычек (символ тильда) присутствует, то присваивает переменной N первого аргумента батника, очищенного от кавычек и безусловно присваивает переменной F значение второго аргумента батника, очищенного от кавычек
If Not "%~2"=="" Set $N=%~1& Set $F=%~2 
 
rem Если не существует файл, путь которого находится в переменной F, то выводит на экран Исходный файл не найден и безусловно завершает батник без завершения cmd.exe
If Not Exist "%$F%" Echo Исходный файл не найден& Exit /B 
 
rem Производит подсчет строк в файле по пути из переменной F (включая пустые строки) и затем производит числовую операцию: вычитает из количества строк(включая пустые) значение переменной N далее записывает результат в переменную М. ^ - здесь экранирует |, чтобы вывод команды type попал на вход find
For /F %%i In ('Type "%$F%"^|Find /C /V ""') Do Set /A $M=%%i-%$N% 
 
rem В переменную j записывается вся строка (эта новая переменная создана, поскольку в Tokens стоит звездочка на конце). 
rem Идея этой строки батника следующая: вывести на экран строки из файла по пути из переменной F, при условии если номер строки, который находится в переменной %%i Больше чем значение переменной M, полученной на предыдущем этапе. (Причем если строка начинается с [ или c ] - эти символы не выводятся)
For /F "Tokens=1* Delims=][" %%i In ('Type "%$F%"^|Find /N /V ""') Do If %%i GTR %$M% Echo.%%j
0
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
01.03.2016, 11:43 4
Цитата Сообщение от RedDevilHat Посмотреть сообщение
For /F "Tokens=1* Delims=]["
, вот и славно, чуть поправлю, разбивка происходит на два токена, можно и так записать (я именно так и записываю)
Windows Batch file
1
For /F "Tokens=1,* Delims=][
, первый токен %%i это ] или [ а второй * (это тоже отдельный токен, который включает в себя все после обрезания предыдущим до следующего обрезания если есть) - %%j, именно то что и выводим.
0
01.03.2016, 11:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2016, 11:43
Помогаю со студенческими работами здесь

Подробно расписать что происходит в данном фрагменте кода
Int() :intez(0) {} Int(int intz) :intez(intz) {} распишите плиз, что где и зачем

Объяснить, что происходит в данном фрагменте кода (матрицы)
Вообщем столкнулся с первой проблемой в изучении данного языка (с++). Мой мозг просто отказывается...

Что происходит в цикле for?
Здравствуйте, не могу разобраться с условием работы в цикле for. Кто сведущ, объясните,...

Что происходит в цикле while?
public class Power { public static void main(String args){ int e, result; for ( int i = 0; i...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru