Cara menghapus semua file yang tidak memiliki string tertentu di namanya

3

saya sudah melihat Menghapus semua file yang tidak cocok dengan pola tertentu - baris perintah Windows

Namun, saya belum melihat apa pun tentang cara menghapus semua yang dilakukan tidak berisi string tertentu dalam nama file-nya.

Bagaimana saya bisa menghapus semua file zip (file lain tidak boleh terpengaruh) dalam folder dan subfoldernya yang tidak memiliki "MS" (peka huruf besar kecil) dalam nama file mereka.

Huruf-huruf ini mungkin bersebelahan dengan huruf lain (mis. Nama file "ABCMSABC" harus disimpan karena memiliki "MS" di dalamnya, tetapi semua file lain harus dihapus). Beberapa file akan memiliki "MS" di dalamnya.

User093203920
sumber
Untuk setidaknya mengarahkan Anda ke arah yang benar menggunakan baris perintah: Anda mungkin perlu menggunakan beberapa kombinasi perintah "untuk" (untuk mengulang folder secara rekursif), "dir", perintah "findstr" dengan ekspresi reguler (untuk keluarkan file yang tidak mengandung "MS"), lalu hapus hasil itu.
BrianC
@BrianC Regexp tidak diperlukan di findstr
DavidPostill
@ DavidvidPostill benar. Saya lupa tentang opsi / v.
BrianC
@BrianC Sudahlah. Anda benar. Regexp diperlukan untuk solusi yang tangguh.
DavidPostill

Jawaban:

5

Bagaimana saya bisa menghapus file zip dalam folder / subfolder yang tidak memiliki "MS" dalam namanya?

Gunakan file batch berikut:

@echo off
setlocal disableDelayedExpansion
for /f "usebackq tokens=*" %%i in (`dir /a:-d /b /s *.zip ^| findstr /v "[\\][^\\]*MS[^\\]*$"` ) do (
  echo del /s /q %%i
)
endlocal

Catatan:

  • Hapus echo ketika Anda senang dengan apa yang akan dilakukan file batch.
  • Jawaban diperbarui sesuai komentar oleh debenham untuk memungkinkan direktori yang berisi string "MS"
  • Jawaban diperbarui untuk menangani nama file yang mengandung spasi.

Bacaan lebih lanjut

DavidPostill
sumber
1
Itu adalah awal yang baik, tetapi Anda membutuhkan pencarian regex yang lebih canggih untuk FINDSTR. Kode Anda saat ini dapat gagal menghapus file zip tanpa MS jika jalur folder ke file berisi MS. Saya akan menggunakan "[\\][^\\]*MS[^\\]*$"
dbenham
1
@dbenham Poin bagus. Terima kasih. Menguji regexp Anda, saya juga menyadari bahwa jawaban saya tidak menangani nama file dengan spasi;) Diperbarui.
DavidPostill