Hapus file di dalam subfolder menggunakan bat

0

Saya tahu nama subfolder di mana file yang ingin saya hapus berada. Nama subfolder adalah "Subfolder Saya" dan file yang ingin saya hapus di dalam subfolder adalah "The-Bad File.txt". Saya berada di drive "D". "My Subfolder" terletak di dalam D:\Folder-2\ ; D:\Folder-4\; D:\Folder-54\; D:\Folder-543\ etc etc (Saya tidak tahu nama folder sebenarnya di mana "My Subfolder" berada). Saya ingin mencari folder ini hanya untuk menghapus "File.txt Buruk" menggunakan file .bat.

Saya tidak menginginkan ini: -

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

Ini akan mencari seluruh drive, yang akan memakan waktu. Yang saya inginkan dalam kata yang lebih sempurna adalah, saya ingin mencari "Subfolder Saya" Pertama. Kemudian Di Dalam "Subfolder Saya" ingin menghapus "File.txt Buruk"

Deb
sumber

Jawaban:

2

Jika Anda BENAR-BENAR PASTI hanya ada satu instance dari Subfolder Saya, maka:

@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"

Ubah saja path untuk "StartFolder" pada baris dua ke folder yang ingin Anda cari.

Meskipun saya benar-benar tidak berpikir mencari folder akan meningkatkan waktu yang dibutuhkan (tidak banyak)

Multiverse IT
sumber
Saya pikir ini adalah jawaban yang saya cari. Tolong lakukan sedikit lagi? "Bad File.txt" tidak ada di dalam D:\Folder-x\My Subfolder` in all the cases. Its can be in D: \ Folder-x \ My Subfolder \ xxxx \ "atau mungkin di` D: \ Folder-x \ My Subfolder \ xxxx \ yyyyy \ "apa pun masalahnya," File.txt Buruk "harus dihapus. Tolong bantu; jawaban ini toooooo tutup ..
Deb
1
"/ S" pada perintah DIR akan menemukannya di mana saja di bawah tingkat teratas tempat Anda mencari.
Debra
Saya hanya ingin melakukan pencarian di dalam D:\Folder-x untuk My Subfolder Seharusnya tidak melakukan pencarian mendalam .. Apakah ada cara untuk mencari semua folder di bawah drive D untuk Subfolder Saya tetapi tidak akan melakukan pencarian mendalam di semua folder drive .. I.e, D: \ Level1 Folder \. Tetapi tidak akan melihat D: \ Level1 Folder \ Level2 Folder \ dll.
Deb
Jika saya mengerti dengan benar ... Anda ingin mencari sedalam level untuk My Subfolder dan hapus semua Bad File.txt dari semua subfoldernya (pencarian dalam). Anda mungkin ingin menggunakan for /f "tokens=*" %%a in ('DIR /b /ad "%StartFolder%"') Do del /s "%%a\My Subfolder\Bad File.txt". Perhatikan kekurangannya /s di DIR dan penambahan /s dan \My Subfolder\ dalam del. Pertama DIR hanya akan mencari subfolder utama pada D:\ dan del /s akan menghapus semua "Bad File.txt" di My Subfolder dan semua subfoldernya. Jika ini bukan yang Anda inginkan, Anda mungkin ingin mengklarifikasi pertanyaan Anda.
Rik
0

Jika Anda menggunakan baris perintah TCMD, itu sangat mudah:

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

Ini WAY lebih cepat dari del /s. Saya memperkirakan 100X untuk hard drive dengan beberapa ribu folder.

Anda mungkin ingin menggunakan global /q jika gambar layar masing-masing nama direktori memperlambat segalanya. Saya tahu itu cocok untuk saya, karena kartu saya mengendarai layar 3 1080p.

ClioCJS
sumber