1 Востаннє редагувалося Raikoho (17.12.2020 13:07:10)

Тема: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

Завдання таке:
Користувач вводить назву файла. Наприклад, це blabla.exe.
Бат файл починає пошук цього файлу по дисках C,D,F, заходячи тільки в 2 папки по ієрархії. Тобто, якщо на диску С буде папка з іменем "ку", а в ній "куку, а в "куку" існує папка "кукуку", то бат файл просканує пошук файла лише до папки "куку", а в її підпапку лізти не буде.
Після цього, як цей шуканий файл blabla.exe буде знайдений, то необхідно видалити всю папку, в якій він знаходиться.
Можете мені допомогти?
Я не знаю як реалізувати пошук ще по підпапках до 2 рівня.. Знаю лише як шукати безпосередньо на диску файл і без залазень в папки, а це звичайна команда rmdir і del....

2

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

bat то не зробить, хоча можилво я не правий, але то дуже легко зробити, наприклад, за допомогою автоіт.

3

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

bat повний за Тюрінгом і має доступ до диску, так що, в принципі, може таке зробити; однак я б радив не морочитися цим, а таки взяти щось ефективніше.

Подякували: Chemist-i, RVcrab, leofun013

4

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

Спочатку думав пошукати, але бровзер так повільно працює... розкажу порядок дій
1. dir /s /b > dir.txt
Не знаю, як в бат вивести не всі файли. Ця операція у мене займає пів год, на виході 30мб файл
2. Шукав в гуглі "пошук текста в файлі bat" знайшов на кібрі "пошук стрічки в файлі bat з наступним видаленням" код:

echo off
:start
cls
type 1.txt
echo vvod danih 
set g=0
set /p g=
for /f %%x in (1.txt) do if %g%==%%x (echo no) else echo %%x >>ver
type ver>1.txt
del ver
goto start

Як його переробити під dir, та що він робить узагалі, я не знаю. Короче якось потрібно зробити

for /f %%x in (dir.txt) do if "%%x"==eq("%%x: blabla.exe") (echo no) else echo %%x >>ver&&goto found
:found

Замість

echo %%x >>ver

треба зробити запис %%x в окрему змінну напр. path.
3. Далі треба знайти в ній "blabla.exe" і видалити, знайти останній слеш ("\") і видалити, або просто останній символ
4. Виконати rmdir /s /q папки, шлях якої в змінній path,
/s = всі файли та підкаталоги
/q = нічого не запитувати

Далі думаю пан чеміст та koala доведуть "ідею" до кінця.

Подякували: Raikoho1

5

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

Цикл - десь так:

for /f %%x in `dir /s /b blabla.exe` do (
 ...
)

6

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

koala написав:

bat повний за Тюрінгом

Але коли я намагався перевірити рівність між виводом програми і стрічкою, то був анальний біль, тому краще

koala написав:

не морочитися цим, а таки взяти щось ефективніше.

7

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

Проблему вирішив.

@echo off
color a

set /p names="Enter Programs Name ---> "
for /F "delims=\" %%i in ('dir /ad /b "C:\"') DO (
::echo "%%i"
if exist "C:\%%i\%names%" (
echo File %names% detected and DELETED in "C:\%%i"!!!!!
RMDIR "C:\%%i" /S /Q
) else (echo Faile "names%" missing in "C:\%%i"
pause
)
echo.
)
pause

написав код, який сканує диск С, шукаючи файл або папку в в кожній з папок у директорії С:\ та видаляє папку, в якій знаходиться шукане.
Для того, щоб добавити ще один захід в ієрархію папок, необхідно ще добавити подібний цикл - ізі. Кому треба беріть, не соромтеся

Подякували: rosh5ko77a1

8

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

Блін, 2 розробника та один "Заблокований" не знали як його зробити, а рішення виявилося таким простим!  З Вас буде класнючий розробник, я це наперед бачу. Ви саме той, хто може шукати інформацію в інтернеті краще, ніж koala

Подякували: Raikoho1

9

Re: Пошук файлу за ім'ям та видалення папки, в якій він знаходиться (bat )

koala написав:

bat повний за Тюрінгом і має доступ до диску, так що, в принципі, може таке зробити; однак я б радив не морочитися цим, а таки взяти щось ефективніше.

Чому? На роботу з файловою системою батники якраз і розраховані. В «чомусь більш ефективному» (якщо маються на увазі мови загального призначення), можливо, доведеться навіть більше сміттєвого коду написати — єдина перевага в більш звичному синтаксисі.

Подякували: Raikoho1