Muszę usunąć wszystkie pliki .jpg i .txt (na przykład) w dir1 i dir2.
Próbowałem:
@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t
W niektórych katalogach to działało; w innych nie.
Na przykład to nic nie dało:
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
Czego brakuje mi w drugim fragmencie? Dlaczego to nie zadziałało?
batch-file
cmd
vexe
źródło
źródło
Odpowiedzi:
Możesz używać symboli wieloznacznych z
del
poleceniem i/S
robić to rekurencyjnie.del /S *.jpg
Uzupełnienie
@BmyGuest zapytał, dlaczego negatywna odpowiedź (
del /s c:\*.blaawbg
) różni się od mojej odpowiedzi.Istnieje ogromna różnica między bieganiem
del /S *.jpg
adel /S C:\*.jpg
. Pierwsze polecenie jest wykonywane z bieżącej lokalizacji , a druga na całym dysku .W scenariuszu, w którym usuwasz
jpg
pliki za pomocą drugiego polecenia, niektóre aplikacje mogą przestać działać, co spowoduje utratę wszystkich zdjęć rodzinnych. Jest to bardzo irytujące, ale komputer nadal będzie mógł działać.Jeśli jednak pracujesz nad jakimś projektem i chcesz usunąć wszystkie swoje
dll
plikimyProject\dll
i uruchomić następujący plik wsadowy:W końcu usuwasz wszystko
dll
pliki zC:\
dysku. Wszystkie twoje aplikacje przestają działać, twój komputer staje się bezużyteczny, a przy następnym restarcie zostajesz teleportowany do czwartego wymiaru, gdzie utkniesz na wieczność.Lekcja tutaj nie polega na uruchamianiu takiego polecenia bezpośrednio w katalogu głównym dysku (lub w innym miejscu, które może być niebezpieczne, na przykład
%windir%
), jeśli można tego uniknąć. Zawsze uruchamiaj je tak lokalnie, jak to możliwe.Dodatek 2
Metoda wieloznaczna spróbuje dopasować wszystkie nazwy plików w formacie 8.3 i formacie „długiej nazwy”. Na przykład
*.dll
dopasujeproject.dll
iproject.dllold
, co może być zaskakujące. Zobacz tę odpowiedź w SU, aby uzyskać bardziej szczegółowe informacje.źródło
pause
na końcu pozwoli użytkownikowi zobaczyć pełne informacje dziennika.cd
del
del
poleceniu bez konieczności zmiany bieżącego katalogu..jsx
pliki i.jsxbin
pliki w folderze i używamdel /S *.jsx
, usuwa również.jsxbin
pliki. Umieszczanie cytatów*.jsx
niczego nie zmieniło. Czy istnieje sposób, aby wymusić usunięcie plików z dokładnie określonym rozszerzeniem?Niedawno napisałem skrypt wsadowy, który pozwala wybrać rozszerzenie pliku do usunięcia. Skrypt przeszuka folder, w którym się znajduje, oraz wszystkie podfoldery dla dowolnego pliku z tym rozszerzeniem i usunie go.
Mam nadzieję, że przyda się to każdemu, kto tego chce :)
źródło
find . -name "*.ext" -type f -delete
(gdzie ext to wybrane rozszerzenie).Możesz użyć tego, aby usunąć WSZYSTKIE pliki w folderze i podfolderach:
Lub użyj tego, aby usunąć tylko określone typy plików:
źródło
Nie mam wystarczającej reputacji, aby dodać komentarz, więc opublikowałem to jako odpowiedź. Ale w przypadku oryginalnego problemu z tym poleceniem:
W pierwszym For brakuje rekurencyjnej składni, powinno to być:
Możesz po prostu:
aby pokazać rzeczywisty wynik.
źródło
to jest to:
pd: zamień folder_path na swój folder
źródło
Jeśli próbujesz usunąć pewne rozszerzenia z dysku C:, użyj tego polecenia cmd:
Miałem klienta, który dostał wirusa szyfrującego i musiałem znaleźć wszystkie niepotrzebne pliki i je usunąć.
źródło
del /s c:\*.dll
, to czeka Cię bardzo poważna niespodzianka. Nigdy nie uruchamiaj takich poleceń na całym dysku, chyba że jest to absolutnie konieczne.c:
należy zastąpić żądanym folderem, jeśli dana osoba nie chce całego dysku.