Belirli bir kalıpla eşleşmeyen tüm dosyaları silme - Windows komut satırı


12

Komut satırı üzerinden öğeleri silmek oldukça kolaydır.

del /options filename.extension

Şimdi, bir klasörde .jpg ile bitmeyen tüm dosyaları silmek istediğimi varsayalım, bunu nasıl yaparım?

Şey, tüm belirtilen görüntüleri .jpg'ye dönüştüren bir yazılım parçam var, ama artık ihtiyacım olmayan orijinalleri bırakıyor.

Her farklı dosya türü için birden çok ifade yapmaya kıyasla, tek bir deyimin yürütülmesi çok daha verimli olacaktır.

Yanıtlar:


14

Bunu şöyle yaparım:

attrib +r *.jpg
del /q *
attrib -r *.jpg

Bu, önce tüm JPG dosyalarını salt okunur yapar, diğer her şeyi siler (otomatik olarak salt okunur dosyaları atlar) ve ardından JPG dosyalarını yeniden yazılabilir hale getirir.


Bir şampiyon gibi çalıştı. Not: /sdosyaları alt dizinlere özyinelemeli olarak eklemek için her satıra ekleyin .
Chuck Wilbur

9

Aslında bu oldukça kolay.

Şunlar gerekir fordosyalar tekrarlatacak ve sonra basitçe uzantıyı bulun:

for %f in (*) do if not %~xf==.jpg del "%f"

hile yapmalı (kod burada ).


teşekkürler, ama bu tek başına hangi haritayı kullandığım bağlıdır.
KdgDev

4
Harita?
Joey

Nasıl değil .jpg değilse değil .jsp değil .xml sonra del?
user1164061

1

Kurtarmaya Powershell
Windows 7/8 zamanlarında eski iyi komut satırının halefi

Del C:\myFolder\* -exclude '*.jpg'

Deliçin bir takma addır Remove-Item. Recurse, include, exclude ve filter gibi çeşitli seçeneklere sahiptir (RegEx için bunu kullanın)

\*Belirli bir klasöre dosya eklemek için eklemeniz gerekir


CMD isteminden, bu çalışmalıdır:PowerShell.exe -Command "&{Remove-Item C:\MyFolder\* -Exclude '*.jpg'}"
Iszi

Not: PowerShell, Win 7/8 ile birlikte gelir. Windows XP veya Vista için indirmeniz ve yüklemeniz gerekir.
Iszi

1

Sorunuza doğrudan cevap vermediğini biliyorum, ancak aşağıdakileri görmek için dönüştürücünüzdeki seçeneklere baktınız mı?

  1. Orijinalleri kendisi silebilir

veya

  1. .Jpg dosyalarını yeni bir klasöre yaz?

Bunun için doğrudan seçeneğim yok. Başlayacak bir JPG ise orijinalin üzerine yazacaktır. Ancak bir JPG oluşturulurken diğerleri diskte kalır.
KdgDev

@WebDevHobo - ah, o zaman Johannes önerisiyle giderdim.
ChrisF

0

Windows 7'de (NTFS birimi) çeşitli derinliklerde yüzlerce dizinde belki 20.000 dosya içeren bir dizinde ".mp3" uzantılı tüm dosyaları bulmak için bir yol arıyordum ... bu yüzden biraz sonra angst, kullandım:

cd <theplace>
dir /S | find /V "<DIR>" | find /V "Total" | find /V "bytes" | find /V "Directory" | find /V "Volume" | find /V ".mp3" | more /S

bu, DIR komut çıkışıyla ilgili her şeyi çıkardıktan sonra .mp3 ile eşleşmeyen dosyaları listeledi ...% 99 çalışıyor ... eşleşmeyen dosya standart DIR çıkışındaki anahtar kelimelerden biri olarak adlandırılmadığı sürece - belki DIR rapor daha az başlık / özet bilgi yapmak için bir yol var - ama bu şekilde orada var en uğraşmadı.


Görünüşe göre buradaki Posta kodu bazı özel karakterleri çıkarır ... bu nedenle yukarıdaki "cd" komutu tek başına bir satırdaydı ve hedef kök dizini belirledi ve ilk "find" komutu "<" DIR "içeren tüm satırları sildi "(git şekil) dir komutunun çıktısı olduğu için - ama buradaki posta kodu bunun bir çeşit meta-talimat olduğunu düşünebilir ve onu
şeritleyebilir

1
Bunu yapmanın çok daha kolay bir yolu var: komutun /bbayrağı dir. dir /byalnızca geçerli dizindeki dosya adlarını ve uzantıları dir /s /blisteler, geçerli ve tüm alt dizinlerdeki tüm dosyaların tam adını listeler. İçin Boru find /vyerine ait fordöngü hatırlıyorum gerekecek hoş bir dokunuş, ama onunla çalıştığını sanmıyorum del.
Bob

0

Bir dosya adıyla eşleşen tüm dosyaları silmenin başka bir yolu aşağıda gösterilmiştir. For döngü listesinin tüm dosyaları ve eğer NOT dosya adına göre eşleşir (dizin adı olmadan).

for /r %f in (*) do if not %~nxf == abc.xml del "%f"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.