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

Поиск в каталоге подкаталога с указанным именем

27.11.2020, 10:39. Показов 4250. Ответов 89

Студворк — интернет-сервис помощи студентам
из идей - воспользоваться циклом for(нет точного понимания как)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2020, 10:39
Ответы с готовыми решениями:

В заданном каталоге и его подкаталогах найти и удалить файлы c указанным именем и с определёнными расширениями
Здравствуйте) Вот такое задание у меня: В заданном каталоге и его подкаталогах найти и удалить файлы c указанным именем и с...

Как проверить наличие подкаталога в каталоге?
Пож-ста помогите разобраться с этим вопросом. Например есть каталог 'C:first'. Как определить есть ли в этом каталоге подкаталог с...

Проверка наличия файла или подкаталога в каталоге
Добрый день! Просьба помочь в построении конструкции, которая позволит определять пустой каталог или в нём имеется файл(-ы) и(или)...

89
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
28.11.2020, 01:33  [ТС]
Студворк — интернет-сервис помощи студентам
есть пример такого кода для решения всех задач, но при запуске он сразу откл :
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@echo off
 
set catalog=%CD%
set folder_name=""
set /A ignorehidden=0
set /A ignorereadonly=0
set /A ignorearchived=0
set /A ERRORLEVEL=0
 
 
if "%~1"=="/?" goto :help
 
:loop
if not "%~1"=="" (
    if "%~1"=="-r" (
        set /A ignorereadonly=1
        shift
        goto :loop
    ) 
    if "%~1"=="-h" (
        set /A ignorehidden=1
        shift
        goto :loop
    )
    if "%~1"=="-a" (
        set /A ignorearchived=1
        shift
        goto :loop
    ) 
    if not "%~1"=="" (
        set catalog=%~s1
        shift
    )
    goto :loop
 
)
 
rem dir "%catalog%" /d/a:%ignorehidden% 
 
:check_attributes 
setlocal enabledelayedexpansion
for %%F in ("%catalog%") do (
    echo %%F
    set attributes=%%~aF
    if "%ignorereadonly%"=="1" (
        if "!attributes:~1,1!" neq "r" (
            rem echo !attributes:~1,1!
            goto :set_error_1
        )   
    )
    if "%ignorearchived%"=="1" (
        if "!attributes:~2,1!" neq "a" (
            goto :set_error_1
        )   
    )
    if "%ignorehidden%"=="1" (
        if "!attributes:~3,1!" neq "h" (
            goto :set_error_1
        )   
    )
)
endlocal
 
:exitkey
if %ERRORLEVEL%==0 (
    echo Каталог %catalog% успешно найден
) else (
    echo Не удалось найти каталог %catalog%
)
 
 
exit /b
 
:set_error_1
set /A ERRORLEVEL=1
goto :exitkey
 
:help 
echo Вывод помощи по программе:
echo Ожидаемый синтаксис: search [каталог\папка для поиска] [атрибуты] ИЛИ
echo альтернативный вариант: search [атрибуты] [каталог\папка для поиска]
echo В противном случае программа будет работать не корректно!
echo Доступные атрибуты:
echo -h : фильтровать спрятанные каталоги.
echo -a : фильтровать архивированные каталоги.
echo -r : фильтровать каталоги только для чтения.
echo (по умолчанию все атрибуты имеют значение 0)
exit /b
start /wait 
@pause
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.11.2020, 01:35
Ладно, разберемся. До воскресенья набросайте что сможете, статья должна помочь

Добавлено через 1 минуту
В чужом коде долго разбираться, мне проще с нуля все написать
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
28.11.2020, 01:37  [ТС]
мне нравится то что вы лаконично написали, и все же как можно решить проблему последнего кода и стоит pause в конце а консоль сразу исчезает
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.11.2020, 01:41
Исчезает, потому что критическая ошибка, которая рушит скрипт, надо разбираться. Выбирайте, либо я продолжаю то, что начал, либо ищу ошибку в Вашем скрипте
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
28.11.2020, 01:43  [ТС]
смотря что будет быстрее, ибо мне желательно сегодня сдать; если вы будете делать в вс то мне удобнее ваше начало, поэтому если будете делать в вс - продолжайте что начали
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.11.2020, 01:44
Кто скрипт писал, который Вы показали?
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
28.11.2020, 01:46  [ТС]
не я уж точно ( на лабораторной у преподавателя был эквивалентный
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.11.2020, 01:53
Ну он же Вам не с неба свалился? Хотя ладно, бессмысленно это обсуждать. В воскресенье или сегодня жду от Вас наработок. Не будет ничего - я так же ничего делать не буду. Как минимум, разберитесь с параметрами, разберитесь с ветвлениями сценария (if и else). В идеале я бы хотел от Вас пусть не код получить, но словесное описание структуры скрипта для решения задачи. Опишите мне какой Вы видите физиологию скрипта? В общем, описывайте алгоритм. Будете понимать в голове как решить задачу, значит и код сваяете (изучение синтаксиса лишь вопрос времени)
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
28.11.2020, 01:55  [ТС]
я постараюсь написать в вс или в пн(не будет доступа в ПК), я примерно понимаю как что может работать, но как это использовать на практике - буду узнавать, спасибо!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
28.11.2020, 01:58
Ну смотрите сами. Я код-то напишу в вскр, а когда Вы его получите зависит только от Вас) Это мое условие помощи. Надеюсь, что мы друг друга поняли
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
29.11.2020, 18:50  [ТС]
тааакс... давайте приступим
в чем заключалось задание:
1)возможность поиска подкаталога с заданными атрибутами файлов (тобиж поиск подкаталогов, в которых содержаться файлы заданных атрибутов - a, r либо h или все вместе);
2)возможность формирования кодов завершения;
3)возможность вывода подсказки help.

первый пункт:
тут я очень путаюсь, но скорее всего нужно задать несколько переменных, которые будут обозначать ахивные,только для чтения и скрытые файлы, а потом с помощью цилка if проверять, что задает пользователь - (-h/h, -a/a, -r/r) и взависимости от того выводить подкаталог.
второй пункт:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
set /A ERRORLEVEL=0 #/A - потому что целочисленная переменная
set /A ERRORLEVEL=1
if %ERRORLEVEL%==0 
(
    echo подкаталог %subdirectory%  найден
) 
else if  %ERRORLEVEL%==1
(
    echo не удалось найти подкаталог %subdirectory%
)
третий пункт:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
set /p "helping=do you need help?: "
 
if "%helping%" == "yes"
 (
 
    echo help
 
 exit /b #выход из процедуры
 
)
else (if "%helping%" == "no" goto end)
:end
pause
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.11.2020, 19:48
Итак. 1.bat:
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
@echo off
setlocal enabledelayedexpansion
set "param=%*"
if defined param (
    for %%a in (%param%) do (
        if /i "%%a"=="a" (
            call :step_1 "%%a"
        )
        if /i "%%a"=="r" (
            call :step_1 "%%a"
        )
        if /i "%%a"=="h" (
            call :step_1 "%%a"
        )
        if "%%a"=="/?" (
            help
        )
    )
) else (
    call :step_2
)
pause
exit
:step_1
for /f "tokens=* delims=" %%a in ('dir /a-d/b/s "C:\test"') do (
    attrib "%%a" | findstr /b /i /c:%1
    if !errorlevel!==0 (
        echo Подкаталог, содержащий файлы с атрибутом %1 - %%dpa
    )
)
exit /b
:step_2
for /f "tokens=* delims=" %%a in ('dir /ad/b/s "C:\test"') do (
    echo %%a
)
exit /b
Запускаем так:
Windows Batch file
1
1.bat параметры через пробел
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
30.11.2020, 00:09  [ТС]
спасибо! по коду практически все понял, не думал, что можно так кратко сделать, но есть проблема : пишет при запуске bat файла что файл не найден сразу же, даже не успеваю ввести параметры

Добавлено через 10 минут
перезапустил ноутбук, все заработало! спасибо)но я хотел еще спросить, почему в 27 строке errorlevel записан в (!), а не иначе?я видел другой способ, и там был также ваш способ, но не понял почему так
не работает лишь подсказка почему то

Добавлено через 10 минут
происходит какая то ошибка:
1) при вводе /? не высвечивает help
2) при вводе параметров h и r или ( a и h) ничего не ищет а заканчивается программа, лишь при вводе параметра a программа выполняется
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
30.11.2020, 07:38
1) На работе потестирую
2) Тут ожидаемая сложность. Покажите вывод команды скрипта:
Windows Batch file
1
2
3
4
for /f "tokens=* delims=" %%a in ('dir /a-d/b/s C:\test') do (
    attrib "%%a"
)
pause
Не забудьте вместо C:\test указать свой каталог
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
30.11.2020, 09:30  [ТС]
если я правильно понял, вот:
Миниатюры
Поиск в каталоге подкаталога с указанным именем  
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
30.11.2020, 10:15
Нет, параметры нужно ставить без дефиса.
Цитата Сообщение от Karen87 Посмотреть сообщение
Покажите вывод команды скрипта:
Я кажется попросил выполнить этот скрипт. Там не нужны параметры. Просто запускаете и показываете вывод
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
30.11.2020, 12:05  [ТС]
вот:
Миниатюры
Поиск в каталоге подкаталога с указанным именем  
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
30.11.2020, 12:22
При таком раскладе всё должно работать. Запускаете с параметром без дефиса
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 82
30.11.2020, 12:36  [ТС]
запускаю командную строку от имени администратора и вот такое:
Миниатюры
Поиск в каталоге подкаталога с указанным именем  
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
30.11.2020, 13:18
Понял, сейчас исправлю

Добавлено через 29 минут
26 строчку измените на:
Windows Batch file
1
attrib "%%a" | findstr /i /c:%1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2020, 13:18

Батник должен удалять файлы из подкаталога, но удаляет их и в основном каталоге
@echo off SETLOCAL EnableExtensions dir/s/a:-d/b|find /v "">nul||(echo Каталог пуст.&pause>nul&GoTo:EOF) (echo Sodergimoe...

Поиск в каталоге нужного файла и создание при его наличии нового файла с тем же именем, но с другим раширением
Нужно сделелать проверку на наличие файла "Пример.т01" в катологе D:\Temp\ и при условии что они есть создать файл (пустой, в томже...

Перенести рекурсивно все файлы из каждого подкаталога главного каталога в корень этого подкаталога
Здравствуйте, подскажите, пожалуйста как решить задачу. Нужно в главном каталоге, проверить все субпапки, найти в них папки/подпапки,...

Определить количество файлов с указанным расширением, находящимся в заданном каталоге
Определить количество файлов с указанным расширением, находящимся в заданном каталоге. Если таких файлов нет, то выдать на экран сообщение....

Параметр с указанным именем не найден
Значится когда в контрагентах ставлю галочку напротив графы "контакты" выскакивает ошибка: "Параметр с указанным именем не...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru