Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
helavin
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 26
1

Указать глубину вложения через параметр

25.02.2014, 10:20. Просмотров 897. Ответов 6
Метки нет (Все метки)

Есть задачка. Запустить батник из командной строки(с %параметрами).
Нужно вывести на экран файлы, указанного в %2 расширения из директорий %3(может быть несколько, но это через shift накорябаю) включительно до %1(глубина просмотра).
С %2 и %3 я еще справляюсь. Если %1 сделать директорией, а %2 расширением.
Bash
1
echo |dir %1 /s  |find "%2" & pause
Вопрос: КАК указать глубину(%1) просмотра директорий(%3)? ведь в них могут быть и другие папки
Чтоб вызывать: батник.bat %1(глубина) %2(расширение) %3(директории). м?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2014, 10:20
Ответы с готовыми решениями:

Заменить число на его глубину вложения
2. Напишите функцию, заменяющую Y на число, равное глубине вложения Y в W, например, Y=a, W=((a b)...

Определить максимальную глубину вложения операторных скобок в программе
"Текст - программа на языке Си. Определить максимальную глубину вложения операторных скобок в этой...

Указать параметр в запросе
Здравствуйте помогите правильно написать запрос. У меня 2 стравочника: 1) Покупатели : реквизит...

Требует указать параметр .FileURL
Здравствуйте! После каких-то манипуляций с программой при сортировке таблиц по некоторым полям...

Как указать нужный мне параметр в процедуре?
У меня програма для статистического критерия. У в ней есть сортировка Хоара. Процедура для масива...

6
ldighost
12 / 4 / 0
Регистрация: 30.06.2012
Сообщений: 15
25.02.2014, 16:14 2
Примерно так, только первых трех переменных ненужно будет. Работоспособно для одного каталога (нужно будет скармливаем скрипту список по одному элементу).
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
echo off
:: %1 - глубина рекурсии
Set flag=3
:: %2 - расширение
Set name=bat
:: %3 - директорий поиска
Set search=D:\4
 
call :find_func %flag% %name% %search%
goto :eof
 
:find_func
SetLocal enabledelayedexpansion
if "%1"=="0" (echo | dir /b "%3" | find "%2") else (
  if "%1"=="1" (echo | dir /b "%3" | find "%2"
        for /f "tokens=1,*" %%a in ('dir %3 /b/ad') do (call find_func.bat 0 %2 %3\%%a)) else (
           echo | dir /b "%3" | find "%2"
           set ss=%~1
           set /a ss-=1 
           for /f "tokens=1,*" %%a in ('dir %3 /b/ad') do (call find_func.bat !ss! %2 %3\%%a)
        ))
goto :eof
2
helavin
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 26
25.02.2014, 16:51  [ТС] 3
ага, пасиб) буду разбирать
0
ldighost
12 / 4 / 0
Регистрация: 30.06.2012
Сообщений: 15
25.02.2014, 18:29 4
Прошу прощения, 13 строчку тоже можно удалить либо переместить в начало скрипта.
0
helavin
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 26
26.02.2014, 01:33  [ТС] 5
угу, эт я сделал, вот что получилось:
Bash
1
2
3
4
5
6
7
8
9
10
@echo off
 
SetLocal enabledelayedexpansion
 
if "%1"=="0" (echo | dir /b "%3" | find "%2")  else (                                   
echo | dir /b "%3" | find "%2" 
        set ss=%~1
        set /a ss-=1 
        for /f "tokens=1,*" %%a in ('dir %3 /b/ad') do (call P2208.bat !ss! %2 %3\%%a ) 
        ) & pause
для одного параметра %3 работает, для остальных шас буду думать
и как бы запаузить красиво при %1==0 , а то пролетает, А если & pause добавить, то он паузит и для else. Но потом всеравно до конца отрабатывает )

Добавлено через 4 часа 2 минуты
"Мыши плакали, кололись, но продолжали жрать кактус!"
вставил shift
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
SetLocal enabledelayedexpansion
:begin
if "%1"=="0" (echo | dir /b "%3" | find "%2" & pause) else (    
    echo | dir /b "%3" | find "%2" 
        set perem=%1
        set /a perem-=1 
    for /f "tokens=1,*" %%a in ('dir %3 /b /ad') do (call P2208.bat !perem! %2 %3\%%a ) 
    ) & pause
if "%3"=="" goto end
shift /3
goto begin
:end
с двумя каталогами(на 4 уровня)работает... криво, страшно, НО работает!
куда бы этот shift вставить, чтоб как-то компактней чтоль получилось?
как-то for вродь надо подкрутить... у меня пока не получилось, видно по незнанию
0
Dragokas
Эксперт WindowsАвтор FAQ
17058 / 7113 / 861
Регистрация: 25.12.2011
Сообщений: 10,924
Записей в блоге: 16
26.02.2014, 02:20 6
Цитата Сообщение от ldighost Посмотреть сообщение
echo | dir
в чем профит от echo ?
0
helavin
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 26
27.02.2014, 02:09  [ТС] 7
Dragokas, а да, точно, пасиб )

Добавлено через 16 часов 30 минут
всё, доделал, ВСЕМ спасибо! )
0
27.02.2014, 02:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2014, 02:09

Отправка вложения через форму
Привет всем. Нужно сделать форму отправки сообщения. Работать буду через phpmailer...

Как указать параметр ячейки - что он именно 'текст'?
у меня в отчет в виде Ecel листа Response.ContentType = 'application/vnd.ms-excel' вываливается...

Вставка вложения в таблицу через форму
Доброго времени суток уважаемые знатоки форума. Собственно проблема с которой я столкнулся...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru