Модераторы: bartram, Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Командные файлы (.bat) 
:(
    Опции темы
mihrimah
Дата 8.3.2015, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.3.2014

Репутация: нет
Всего: нет



1. В заданном каталоге и его подкаталогах найти общее количество подкаталогов. На экран вывести только результат.
Код КФ получился такой:
Код

@echo off
for /D %%i in (%1\*.*) do set /A i+=1
echo The total number of subdirectories is %i%


Параметром %1 передается каталог, в котором и необходимо подсчитать общее число подкаталогов.

Но считает неправильно. Причем при многократном выполнении программы, число подкаталогов увеличивается (несмотря на то, что путь к каталогу остается прежним).

2. Вычисление и вывод на экран значения факториала целого числа, задаваемого при запуске КФ. Предусмотреть проверку заданного значения и при задании отрицательного значения или значения, превышающего максимально возможную величину, выводить соответствующие сообщения. 
Вот что я накидал (не пугайтесь ужасающей безграмотности кода, я в этом чайник, не волшебник, как говрится, а токма учусь):

Код

@echo off
if %1==0 echo n!= 1
if %1 LSS 0 goto negative
:negative 
echo You entered a negative number. Please, try again. 
if %1 GTR 100 goto large 
:large 
echo Your number is too large. Please, try again.
for /L %%i in (1,1,10) do (set /A n*=%%i& goto ok)
:ok 
echo n! = %n%


Число, факториал которого надо вычислить, передается параметром КФ %1. 
Конечно, оно не работает. Вернее, работает только когда параметром передается 0, но и то не так, как надо: на экран выводятся все echo, несмотря на метки...


PM MAIL   Вверх
01MDM
Дата 13.3.2015, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



1. Не забывайте о setlocal, он ограничивает жизнь переменных пределами исполнения батника. Следовательно при повторном запуске переменная будет создана заново, а не импортирована из предыдущего запуска.
Код

@echo off
setlocal

if "%~1"=="" goto:eof

for /f %%i in ('dir /b /ad %1') do set /a i+=1
echo %i%


2. Факториал (запускать без параметров)
Код

@echo off
setlocal

set /p fact="Factorial: "
echo -----
if not defined fact (echo NULL & goto:eof)
if %fact% lss 0 (echo Input value must be ^>= 0 & goto:eof)

set /a fact-=1
set res=1
for /l %%i in (0,1,%fact%) do set /a res*=%%i+1

echo %res%


Это сообщение отредактировал(а) 01MDM - 13.3.2015, 23:22


--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Windows"
December
bartram
Akella

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »


 




[ Время генерации скрипта: 0.0998 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.