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

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

14.05.2016, 22:34. Просмотров 976. Ответов 5
Метки нет (Все метки)

Здравствуйте)
Вот такое задание у меня:
В заданном каталоге и его подкаталогах найти и удалить файлы c указанным именем и с расширениями .obj, .map и .bak. Параметр запуска командного файла – путь к каталогу.
Перед удалением давать запрос на удаление - "нажмите Y/N" - и удалять/пропускать файл.
Показать пути к удаляемым файлам и подсчитать их количество. Если таких файлов не было, дать соответствующее сообщение.
В сценарии предусмотреть: проверку наличия параметра запуска, проверку существования заданного каталога, проверку успешного завершения сценария


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
@echo off
rem Проверка наличия параметра запуска и существования заданного каталога
if "%1"=="" goto NoKatName
if NOT EXIST %1 goto KatNotExist
echo Каталог %1 найден, его содержимое:
echo.
type %1|more
set /A sh=0
for /R "%1" %%i IN(g1.obj,g2?.map,g3*.pak) DO(echo %%i echo. echo Удалить файл? set /p pr=Введите Y или N: if /i %pr%==Y (del %%i /p sh=sh+1 echo %%1>>file12.txt))
if %sh%==0 (echo Таких файлов не найдено)
else (echo Количество удаленных файлов: %sh%)
type file12.txt
if NOT ERRORLEVEL 1 (echo Сценарий завершился успешно)
else (echo Ошибка выполнения сценария)
goto:EOF
:NoKatName
echo При запуске не задано имя файла
echo.
goto:EOF
:KatNotExist
echo Каталог не найден
echo.
goto:EOF
Выдает, что отказано в доступе к каталогу
и непредвиденное появление IN(g1.obj.)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2016, 22:34
Ответы с готовыми решениями:

В указанном каталоге и его подкаталогах найти наибольшего размера файл с указанным расширением
Помогите пожалуйста написать задание из лабораторной работы по ОС 1. В каталоге, указанном...

Командный файл, который сообщает, имеются ли в указанном каталоге файлы с определёнными расширениями
Создать командный файл k7.bat, который с помощью команды FOR сообщает, имеются ли в указанном...

В заданном каталоге и его подкаталогах найти общее количество подкаталогов
Код КФ получился такой: @echo off for /D %%i in (%1\*.*) do set /A i+=1 echo The total number of...

В каталоге и его подкаталогах найти и скопировать в отдельный подкаталог все файлы, созданные после 14:00
Добрый вечер, нужна помощь в написании bat файла. На форуме нашла много похожих заданий, но ни один...

В каталоге и его подкаталогах найти и скопировать в отдельный подкаталог все файлы, созданные после 14:00
В каталоге, который указан первым параметром bat-файла, и его подкаталогах, найти файлы, созданные...

5
alpap
2134 / 1441 / 482
Регистрация: 26.04.2015
Сообщений: 4,910
14.05.2016, 23:35 2
после IN и DO полагается ставить пробел.
команды в скобках после DO пишите на отдельных строках
Windows Batch file
1
2
3
4
...do (
 com1
 com2
)
If и else - или if ... (comA) else (comB) или
Windows Batch file
1
2
3
4
5
if ... (
 comA
 ) else (
 comB
 )
команда type - для просмотра содержимого файла, для папки используется dir
учите команды, справка на русском и примеров много в и-нете и все получится.
0
YuS_2
Любознательный
1103 / 637 / 194
Регистрация: 10.03.2016
Сообщений: 1,482
15.05.2016, 12:29 3
Цитата Сообщение от attagirl Посмотреть сообщение
Выдает, что отказано
основные ошибки Вам уже подсказали выше.
Ну, что сказать... понимание у Вас есть и поэтому, всё можно было сделать и самостоятельно, необходимо только читать помощь по командам и литературу о сценариях cmd... ну и чуток фантазии...
Так как усилия прилагали ( ), вот Вам авансом готовый сценарий, сделанный на основе Вашего:
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
@echo off
rem Проверка наличия параметра запуска и существования заданного каталога
set "mpath=%~1"
set "f1=g1.obj"
set "f2=g2?.map"
set "f3=g3*.pak"
if "%mpath%"=="" goto :NoKatName
if NOT EXIST "%mpath%" goto :KatNotExist
echo Каталог "%mpath%" найден, его содержимое:
echo.
dir /b/s/a "%mpath%"|more
set /a sh=0
del file12.txt
for /f "delims=" %%i in ('dir /b/s/a "%mpath%%f1%" "%mpath%%f2%" "%mpath%%f3%"') do (
    call :er "%%~i"
)
if %sh%==0 (echo Нет удалённых файлов) else (echo Количество удаленных файлов: %sh%)
type file12.txt
if errorlevel 1 (echo Ошибка выполнения сценария) else (echo Сценарий завершился успешно)
pause&&exit
:er
echo "%~1"
choice /c yn /m "Удалить файл, "
goto :answ%errorlevel%
:answ1
>>file12.txt echo "%~1"
del /f/a/q "%~1"
set /a sh+=1
:answ2
exit /b
:answer255
echo ERROR!!!
exit /b
:NoKatName
echo При запуске не задано имя файла
echo.
pause&&exit
:KatNotExist
echo Каталог не найден
echo.
pause&&exit
0
attagirl
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 3
15.05.2016, 16:37  [ТС] 4
Вот что получилось, но не срабатывает команда, может синтаксис не тот
Windows Batch file
14
if /i %pr%==Y or N (del /p %%i & sh=sh+1 & echo %%1>>file12.txt)
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
@echo off
rem Проверка наличия параметра запуска и существования заданного каталога
if "%1"=="" goto NoKatName
if NOT EXIST %1 goto KatNotExist
echo Каталог %1 найден, его содержимое:
echo.
dir %1|more
set /A sh=0
for /R "%1" %%i IN (g1.obj,g2?.map,g3*.pak) DO (
echo %%i
echo.
echo Удалить файл?
set /p pr=Y or N: 
if /i %pr%==Y or N (del /p %%i & sh=sh+1 & echo %%1>>file12.txt)
)
if %sh%==0 (echo Таких файлов не найдено)
else (echo Количество удаленных файлов: %sh%)
type file12.txt
if NOT ERRORLEVEL 1 (echo Сценарий завершился успешно)
else (echo Ошибка выполнения сценария)
goto:EOF
:NoKatName
echo При запуске не задано имя файла
echo.
goto:EOF
:KatNotExist
echo Каталог не найден
echo.
goto:EOF
0
YuS_2
Любознательный
1103 / 637 / 194
Регистрация: 10.03.2016
Сообщений: 1,482
15.05.2016, 16:57 5
Цитата Сообщение от attagirl Посмотреть сообщение
if /i %pr%==Y or N
Windows Batch file
1
if /?
Цитата Сообщение от attagirl Посмотреть сообщение
sh=sh+1
это не будет работать.
Цитата Сообщение от attagirl Посмотреть сообщение
echo %%1
что здесь означает %%1 ?
Windows Batch file
1
for /?
Цитата Сообщение от attagirl Посмотреть сообщение
Windows Batch file
1
2
3
4
5
if %sh%==0 (echo Таких файлов не найдено)
else (echo Количество удаленных файлов: %sh%)
...
if NOT ERRORLEVEL 1 (echo Сценарий завершился успешно)
else (echo Ошибка выполнения сценария)
Windows Batch file
1
if /?
0
attagirl
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 3
15.05.2016, 20:19  [ТС] 6
echo %%1
Это опечатка, там echo %%i

Добавлено через 3 часа 14 минут
Спасибо большое, всё получилось))
0
15.05.2016, 20:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2016, 20:19

В каталоге и его подкаталогах найти и скопировать в отдельный подкаталог все файлы, созданные после 14:00
Здравствуйте! Требуется помощь в выполнении такой вот задачи: "В каталоге, указанном первым...

В каталоге и его подкаталогах найти и скопировать в отдельный подкаталог все файлы, созданные после 14:00
Здравствуйте, помогите пожалуйста решить лабораторные. Очень надо, я в этом ничего не понимаю. Мне...

В заданном каталоге и его подкаталогах найти общее количество подкаталогов. На экран вывести только требуемый результат. Использовать цикл FOR /D
Нашел, скопировал в файл, а как подсчитать и вывести количество???? @echo off cls FOR /r...


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

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

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