Używam systemu Windows.
Chcę usunąć wszystkie pliki i foldery w folderze przez wywołanie systemowe.
Mogę tak zadzwonić:
>rd /s /q c:\destination
>md c:\destination
Czy znasz łatwiejszy sposób?
Używam systemu Windows.
Chcę usunąć wszystkie pliki i foldery w folderze przez wywołanie systemowe.
Mogę tak zadzwonić:
>rd /s /q c:\destination
>md c:\destination
Czy znasz łatwiejszy sposób?
Odpowiedzi:
Nie, nie znam żadnego.
Jeśli z jakiegoś powodu chcesz zachować oryginalny katalog (listy ACL, & c.), A zamiast tego naprawdę chcesz go opróżnić, możesz wykonać następujące czynności:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
To najpierw usuwa wszystkie pliki z katalogu, a następnie rekurencyjnie usuwa wszystkie zagnieżdżone katalogi, ale ogólnie zachowując katalog najwyższego poziomu taki, jaki jest (z wyjątkiem jego zawartości).
Zwróć uwagę, że w pliku wsadowym musisz podwoić %
w for
pętli:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
ścieżką, ewentualnie używając cudzysłowów wokół całości, jeśli to konieczne.
del c:\destination\*.* /s /q
pracował dla mnie. Mam nadzieję, że u Ciebie też to zadziała.
del *.*
del "../../server/front-end\*.*"
Myślę, że najłatwiej to zrobić:
rmdir /s /q "C:\FolderToNotToDelete\"
Ostatni „\” na ścieżce jest ważną częścią.
mkdir C:\FolderToNotToDelete
wystarczyło dla mnie :)
Tak! Użyj Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Aby usunąć plik:
del PATH_TO_FILE
Aby usunąć folder zawierający wszystkie pliki:
rmdir /s /q PATH_TO_FOLDER
Usunięcie wszystkich plików z określonego folderu (nie usuwanie samego folderu) jest nieco skomplikowane. del /s *.*
nie może usuwać folderów, ale usuwa pliki ze wszystkich podfolderów. Potrzebne są więc dwa polecenia:
del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
Możesz utworzyć skrypt, aby usunąć cokolwiek chcesz (folder lub plik) w następujący sposób mydel.bat
:
@echo off
setlocal enableextensions
if "%~1"=="" (
echo Usage: %0 path
exit /b 1
)
:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1
:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%
Kilka przykładów użycia:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Jedną z łatwych opcji w jednym wierszu jest utworzenie pustego katalogu gdzieś w systemie plików, a następnie użycie ROBOCOPY
( http://technet.microsoft.com/en-us/library/cc733145.aspx ) z /MIR
przełącznikiem, aby usunąć wszystkie pliki i podfoldery. Domyślnie robocopy nie kopiuje zabezpieczeń, więc listy ACL w folderze głównym powinny pozostać nienaruszone.
Prawdopodobnie chcesz również ustawić wartość przełącznika ponawiania /r
, ponieważ domyślna liczba ponownych prób to 1 milion.
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
Miałem folder indeksu z 33 folderami, które wymagały usunięcia wszystkich plików i podfolderów. Otworzyłem wiersz poleceń w folderze indeksu, a następnie użyłem tych poleceń:
for /d in (*) do rd /s /q "%a" & (
md "%a")
Podzieliłem je na dwie linie (wciśnij Enter po pierwszej linii, a gdy zostaniesz poproszony o dodanie drugiej linii), ponieważ wpisanie w jednej linii może nie zadziałać. To polecenie usunie każdy katalog, a następnie utworzy nowy, który jest pusty, usuwając w ten sposób wszystkie pliki i podfoldery w oryginalnym katalogu.
Przejdź do katalogu nadrzędnego
Usuń podfoldery
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
, musisz popd
też użyć . Niestety popd
nie działa po usunięciu katalogu. Więc musisz to zrobić cd
zamiast pushd
.
spróbuj tego, to przeszuka cały MyFolder w katalogu głównym i usunie wszystkie foldery o nazwie MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
del .\*
To polecenie usuwa wszystkie pliki i foldery z bieżącej nawigacji w linii poleceń.