We wcześniejszych wersjach MS-DOS - chciałbym powiedzieć wersję 7, ale mogłem się mylić - było deltree
polecenie, które rekurencyjnie kasowało wszystkie podkatalogi i pliki z podanej ścieżki.
deltree
już nie istnieje, ale del
wydaje się , że nie odziedziczył możliwości usuwania drzewa. del /s
usuwa pliki, ale nie foldery.
Jak łatwo (czyli jednym poleceniem) usunąć drzewo z pliku wsadowego?
windows
batch-file
cmd
dos
David Koelle
źródło
źródło
Odpowiedzi:
Jak wspominali inni,
rd
polecenie ma/s
przełącznik do rekurencyjnego usuwania podkatalogów. Możesz połączyć to z/q
przełącznikiem, aby wymusić usunięcie podkatalogu (i jego zawartości) bez monitowania o toWszystkim brakuje to, że nie
rd
jest to dokładny zamiennik dla pozornie ( prawie ) każdej strony zwróconej przez Google . Komenda pracował zarówno dla katalogów i plików , dzięki czemu pojedyncze polecenie usunięcie wygodne, uniwersalne. Oznacza to, że oba poniższe warunki są ważne:deltree
windows deltree
deltree
Jednak
rd
(nie jest to zaskakujące) działa tylko dla katalogów . W związku z tym tylko pierwsze z tych poleceń jest ważne, podczas gdy drugie podaje i błąd i pozostawia plik nieusunięty:Co więcej,
del
polecenie działa tylko dla plików, a nie katalogów, więc tylko drugie polecenie jest poprawne, podczas gdy pierwsze powoduje błąd:Nie ma wbudowanego sposobu usuwania plików i katalogów, jak można by to zrobić
deltree
. Używanierd
idel
indywidualnie jest w najlepszym razie niewygodne, ponieważ wymaga rozróżnienia, czy obiekt systemu plików (nazwa pliku / folderu) jest plikiem lub katalogiem, co nie zawsze jest możliwe lub praktyczne.Możesz skopiować
deltree
polecenie z poprzedniego systemu operacyjnego, jednak będzie działać tylko w 32-bitowych wersjach systemu Windows, ponieważ jest to 16-bitowe polecenie DOS (nawet w systemie Windows 9x).Inną opcją jest utworzenie pliku wsadowego, który wywołuje zarówno
del
ird
; coś takiego:Nazwałbyś to tak:
Powoduje to wywołanie obu
rd
idel
, przekazanie argumentów i przekierowanie danych wyjściowych do,nul
aby uniknąć błędu, który jeden z nich będzie niezmiennie emitował.Prawdopodobnie będziesz chciał dostosować zachowanie, aby dostosować lub uprościć parametry lub zezwolić na komunikaty o błędach, ale mimo to nie jest to idealne rozwiązanie i nie zastępuje bezpośrednio
deltree
.Alternatywą jest zdobycie narzędzia innej firmy, chociaż znalezienie takiego jest prawdziwym ćwiczeniem w tworzeniu zapytań wyszukiwania.
źródło
rd /s foobar.txt
/q
The directory name is invalid.
RMDIR /S
, więc stwierdzenie, że nie ma możliwości usunięcia zarówno plików, jak i folderów za jednym zamachem, jest w rzeczywistości niepoprawne.rd /s
dotyczy tylko katalogu, a nie plików w nim zawartych . Aby usunąć znajdujące się w nim pliki, musisz użyćrd
samego katalogu. Na przykład nie możesz powiedziećrd c:\target\foobar.txt
, że musiałbyś użyćrd /s c:\target
, ale możesz nie chcieć usuwać samego katalogu, tylko jego zawartość.deltree
może to zrobić, alerd /s
nie może,rd /s
usuwa również sam katalog.RMDIR /S
- nierd /s
. Ale nawetrd
jeśli katalog zniknie, w jaki sposób pliki nie zostaną usunięte? Nawet jeśli tak nie jest, pliki są skutecznie osierocone i powinny zostać usunięte przez system. A nawet jeśli tak się nie stanie, z pewnością tak się stanie, jeśli ponownie utworzysz katalog - ponownie nie otrzymasz magicznie listy swoich plików. Wskaźniki są zasadniczo usuwane. Więc mówisz, że nigdy nie odzyskasz tego miejsca, ponieważ nigdy nie będziesz w stanie usunąć tych plików, ponownie, jeśli używaszrd /s
? Nie jestem pewien, czy bym w to uwierzył - to byłby straszny błąd. Chodzi o to, aby usunąć pliki & reż.cd Documents
,rd /s test
Twój katalog i plik tekstowy zostanie usunięty.rmdir /s test
też działa. NIGDY nie próbuj używaćrd /s C:\Users\me\Documents\test\test.txt
- to byłoby absolutnie głupie. Ale MOŻESZ i POWINIENEŚ użyć polecenia w katalogu, ale nie w nazwie pliku. Ale usuwając katalog, możesz usunąć pliki.Zastąpiono go poleceniami: RMDIR lub RD
Usuń wszystkie podkatalogi za pomocą / S
Używaj go cicho z / Q
Przykład:
Dokumentacja:
źródło
Czując nostalgię, napisałem własny plik deltree.exe. Działa zarówno z katalogami, jak i plikami i używa SHFileOperation () do przyspieszenia.
https://github.com/ai7/toolbox/tree/master/deltree
Wymaga symboli wieloznacznych i możesz go używać jak unix rm:
źródło
źródło
Obecnie możesz użyć Powershell do wykonania tego samego zadania:
źródło
źródło
Właściwie polecenia RMDIR i RD w nowoczesnym systemie operacyjnym Windows łączą zarówno polecenia RD, jak i Deltree z Win 98 w jednym poleceniu. Jest to polecenie wewnętrzne, dlatego nie znajdziesz żadnego RD.exe ani RMDIR.exe.
Wpisując to „RD /?” w cmd bez podwójnych zapytań otrzymasz dokładnie to, czego chcesz.
źródło
rekurencyjne usuwanie katalogu i całej jego zawartości
źródło
Użyj tego:
źródło
Usuń wszystkie pliki i podkatalogi
źródło