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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2014, 07:32   #1
Alkatras
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию Помощь с батником

Добрый день! Написал такой код:
Код:
::отключаем вывод команд на экран
@echo off

::выводим запрос на ввод номера строки num
set /p num="Enter the line number: "

if "%num%"=="0" (
	::вводим переменную для подсчета количества строк
	set /a i=0

	::считаем строки
	for /f %%i in (01.txt) do (set /a i=i+1)
	
) else (
	::вводим переменную на 1 меньше чем num (количество строк от начала, которые пропустим при выводе)
	set /a n=%num%-1

	echo %num%

	::вводим переменную, ей присваиваем строку - параметр
	set s="skip=%n%"

	::выводим надпись перед выводом строк
	echo Lines starting with %num% line of a file 01.txt:

	::выводим строки
	for /f %s% %%a in (01.txt) do echo %%a
)

::ждем нажатия клавиши для выхода
pause
Суть кода. Если ввожу не 0 (например 5), то должны выводиться все строки начиная с 5й из файла. Ситуацию, когда вводиться 0 еще не описал. Проблема в том что после выполнения команды set s="skip=%n%" переменная s принимает значение skip=, а должна skip=4, поэтому выводятся все строки из файла. Делал код без условия if - все работало.
Помогите разобраться! Спасибо!
Alkatras вне форума Ответить с цитированием
Старый 18.02.2014, 09:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

подтверждаю, что-то странное творится при использовании круглых скобок.
Код в них обрабатывается как-то ОБОСОБЛЕННО!

предлагаю такой выход из ситуации:
Код:
::отключаем вывод команд на экран
@echo off

::выводим запрос на ввод номера строки num
set /p num="Enter the line number: "


if "%num%"=="0" GOTO AllLines

        echo "НЕ РАВНО НУЛЮ"
        ::вводим переменную на 1 меньше чем num (количество строк от начала, которые пропустим при выводе)
        set /a n=4-1

        echo %num%

        ::вводим переменную, ей присваиваем строку - параметр
        set s="skip=%n%"

        echo %s%

        ::выводим надпись перед выводом строк
        echo Lines starting with %num% line of a file 01.txt:

        ::выводим строки
        for /f %s% %%a in (01.txt) do echo %%a

        GOTO Finish

:AllLines
        echo "РАВНО НУЛЮ"
        ::вводим переменную для подсчета количества строк
        set /a i=0

        ::считаем строки
        for /f %%i in (01.txt) do (set /a i=i+1)
        GOTO Finish

        


:Finish
::ждем нажатия клавиши для выхода
pause
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.02.2014, 10:22   #3
Alkatras
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию

Спасибо огромное. То что нужно!
Alkatras вне форума Ответить с цитированием
Старый 18.02.2014, 10:33   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Фишка с круглыми скобками в IF ... ELSE есть. Есть и пути решения
http://webhamster.ru/mytetrashare/in...8818biapwwgnsm
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.02.2014, 10:57   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Аватар, очень полезная ссылка, спасибо!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование батником DrBAXA Windows 3 02.05.2013 11:33
Удаление папок на хранилище батником Greenbur Помощь студентам 4 17.05.2012 22:24
проблема с батником xxdredxx Помощь студентам 3 04.05.2011 17:52
Как закрыть и снова открыть Оперу батником? ben1 Помощь студентам 5 27.10.2010 20:53
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12