Potrzebuję sposobu, aby rekursywnie usunąć folder i jego dzieci, czy jest tam wstępnie zbudowane narzędzie do tego, czy muszę go napisać?RM -rf odpowiednik dla Windows?
DEL/S nie usuwa katalogów.
deltree została usunięta z systemu Windows 2000+
Potrzebuję sposobu, aby rekursywnie usunąć folder i jego dzieci, czy jest tam wstępnie zbudowane narzędzie do tego, czy muszę go napisać?RM -rf odpowiednik dla Windows?
DEL/S nie usuwa katalogów.
deltree została usunięta z systemu Windows 2000+
RMDIR lub RD jeśli są za pomocą klasyczne polecenie wiersza polecenia (cmd.exe):
rd /s /q "path"
Jeśli używasz PowerShell można użyć Remove-Item
(co jest aliasem del
, erase
, rd
, ri
, rm
i rmdir
) i zajmuje -Recurse
argument, że może być zwarte do -r
rd -r "path"
Warto zauważyć, że dla dużej liczby plików rmdir/s/q jest zwykle znacznie szybszy niż odpowiednik operacji "wybierz dir, shift + delete" w eksploratorze. – Wedge
Co powiesz na używanie flag do dopasowywania nazw katalogów? Jeśli chcę upuścić wszystkie katalogi pod foo \, 'rmdir/s/q foo \ *' podaje błąd niepoprawnej składni. –
To nie usuwa plików, takich jak rm -rf, a także zwraca wartość niezerową, gdy katalog nie istnieje, więc 'rd/s/q foo && echo" yay "' zawiedzie, jeśli katalog " foo "nie istnieje. –
rmdir/s dirname
Spróbuj polecenia:
pracował dla mnie w kombinacji w/rmdir/s/q, ponieważ niektóre pliki były zablokowane, a rmdir na nich nie działał. del/foldername nuked zablokowane pliki, które następnie pozwoliły rmdir pozbyć się katalogu root. Miły. – bbqchickenrobot
rmdir /S /Q %DIRNAME%
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S
Usuwa wszystkie katalogi i pliki w podanym katalogu oprócz samego katalogu. Służy do usuwania drzewa katalogów.
/Q
Tryb cichy, nie pytaj, jeśli OK, aby usunąć drzewa katalogów z /S
Dzięki za wyjaśnienie parametrów. Przyjęta odpowiedź tego nie robi, niestety. – Thomas
Można zainstalować Cygwin, który ma rm
jak również ls
itp
Jest również deltree, jeśli używasz starszej wersji systemu Windows.
Bardzo lubię ten miejscu za znalezienie poleceń: SS64: Del - Delete Files
admin:
takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder
Works do niczego w tym pliki sys
EDIT: I rzeczywiście znaleźć najlepszy sposób, który również rozwiązuje plik ścieżka zbyt długi problem również:
mkdir \empty
robocopy /mir \empty folder
Można zainstalować GnuWin32 i natywnie natywnie używać poleceń w oknach.Instaluję to zanim zainstaluję cokolwiek innego na minty świeżej kopii okien. :)
Oto co trzeba zrobić ...
Utwórz plik wsadowy z poniższej linii
RMDIR /S %1
Zapisz plik wsadowy jako Remove.bat
i umieścić go w C:\windows
Utwórz następujący klucz rejestru
HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)
Wprowadzenie regedit
i aktualizować wartość domyślna HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default
z następującą wartością
"c:\windows\REMOVE.bat" "%1"
to wszystko! Teraz można kliknąć prawym przyciskiem myszy dowolny katalog i użyć funkcji RMDIR
oto co pracował dla mnie:
Spróbuj zmniejsza długość ścieżki. tj. :: Zmień nazwę wszystkich folderów, które prowadzą do takiego pliku, do najmniejszych możliwych nazw. Powiedz imiona jednoliterowe. Zmień nazwę w hierarchii folderów. Dzięki temu skutecznie zmniejszasz długość ścieżki. Teraz spróbuj od razu usunąć plik.
Najpierw przyjrzyjmy się co rm -rf
robi:
C:\Users\ohnob\things>touch stuff.txt
C:\Users\ohnob\things>rm -rf stuff.txt
C:\Users\ohnob\things>mkdir stuff.txt
C:\Users\ohnob\things>rm -rf stuff.txt
C:\Users\ohnob\things>ls -l
total 0
C:\Users\ohnob\things>rm -rf stuff.txt
Istnieją trzy scenariusze, w których rm -rf
jest powszechnie stosowane tam, gdzie oczekuje się, aby powrócić 0
:
Mam zamiar zignorować całą sprawę uprawnień, ale nikt nie używa uprawnień lub próbuje odmówić sobie prawa do zapisu na rzeczy w systemie Windows tak czy inaczej (OK, to ma być żart ...).
Najpierw set ERRORLEVEL
to 0, a następnie usuń ścieżkę tylko wtedy, gdy istnieje, używając różnych poleceń w zależności od tego, czy jest to katalog, czy nie. IF EXIST
nie ustawia ERRORLEVEL
na 0, jeśli ścieżka nie istnieje, więc ustawienie ERRORLEVEL
na 0 jako pierwsze jest konieczne, aby prawidłowo wykryć powodzenie w sposób, który naśladuje normalne użytkowanie rm -rf
. Ochrona RD
z jest konieczna, ponieważ RD
, w przeciwieństwie do rm -f
, wygeneruje błąd, jeśli cel nie istnieje.
Poniższy fragment kodu zakłada, że przedrostek DELPATH jest poprzednio podany. (Jest to bezpieczne, gdy robisz coś takiego, jak SET DELPATH=%1
. Spróbuj wstawić ECHO %1
w .cmd
i przekazać mu argument zawierający spacje i zobaczyć, co stanie się dla ciebie). Po ukończeniu tego fragmentu możesz sprawdzić, czy nie udało się uzyskać IF ERRORLEVEL 1
.
: # Determine whether we need to invoke DEL or RD or do nothing.
SET DELPATH_DELMETHOD=RD
PUSHD %DELPATH% 2>NUL
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD)
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP
: # Reset ERRORLEVEL so that the last command which
: # otherwise set it does not cause us to falsely detect
: # failure.
CMD /C EXIT 0
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH%
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%
Punkt jest taki, że wszystko jest prostsze, gdy środowisko jest zgodne z POSIX. Lub jeśli zainstalujesz minimalny MSYS i po prostu go użyjesz.
del/s/q directorytobedeleted
Spróbuj dodać opis/wyjaśnienie. –
Przejdź do ścieżki i wywołać to polecenie.
rd /s /q "FOLDER_NAME"
/s Usuwa określony katalog i wszystkie podkatalogi, w tym dowolne pliki. Użyj/s, aby usunąć drzewo.
/q: Uruchamia rmdir w trybie cichym. Usuwa katalogi bez potwierdzenia.
/? : Wyświetla pomoc w wierszu polecenia.
Na usuwanie katalogu (lub nie istnieje) należy stosować następujące:
if exist myfolder (rmdir /s/q myfolder)
Czy DEL/s (a) nie działa w ogóle (jest ona dostępna tylko w niektórych wersjach) lub (b) pozostawić katalog najwyższego poziomu, ale usuń wszystko pod nim lub (c) zostaw wszystkie katalogi podczas usuwania wszystkich plików? – wnoise
@Aaron, odpowiedź c, musisz użyć rmdir/s, aby usunąć katalogi i pliki. – Wedge
Czy to naprawdę "format c:", to instalacja systemu Linux? Oczywiście, żartuję. –