Я знаю имя подпапки, внутри которой находится файл, который я хочу удалить. Имя подпапки "Моя подпапка", а файл, который я хочу удалить внутри подпапки, - «The-Bad File.txt». Я нахожусь на "D" диск. "Моя подпапка" находится внутри D:\Folder-2\ ; D:\Folder-4\ ; D:\Folder-54\ ; D:\Folder-543\ etc и т.д. (Я не знаю реальных имен папок, внутри которых находится "Моя подпапка"). Я хочу искать в этих папках только для удаления "Bad File.txt", используя файл .bat.

Я не хочу этого: -

@echo off
del /s "Bad File.txt"

Это будет искать весь диск, который займет время. То, что я хочу в более совершенном слове, я хочу сначала найти "Моя подпапка". Затем внутри "Моя подпапка" хотите удалить «Bad File.txt»

2 ответа2

2

Если вы абсолютно уверены, что существует только один экземпляр моей подпапки, то:

@echo off
Set StartFolder=D:\Path\To\A\Folder
for /f "tokens=*" %%a in ('DIR /s /b /ad "%StartFolder%"') Do del "%%a\Bad File.txt"

Просто измените путь для "StartFolder" во второй строке на папку, в которой вы хотите начать поиск.

Хотя я действительно не думаю, что поиск папки улучшит время, затрачиваемое на него (по крайней мере, не намного).

0

Если вы используете командную строку TCMD, это очень просто:

global if exist "Bad File.txt" del "Bad File.txt"

Это намного быстрее, чем del /s Я бы оценил 100X для жесткого диска с несколькими тысячами папок.

Возможно, вы захотите использовать global /q если отрисовка экрана каждого имени каталога замедляет работу. Я знаю, что это для меня, потому что моя карта имеет 3 дисплея 1080p.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .