Uso Windows.
Voglio eliminare tutti i file e le cartelle in una cartella tramite chiamata di sistema.
Potrei chiamare così:
>rd /s /q c:\destination
>md c:\destination
Conosci un modo più semplice?
Uso Windows.
Voglio eliminare tutti i file e le cartelle in una cartella tramite chiamata di sistema.
Potrei chiamare così:
>rd /s /q c:\destination
>md c:\destination
Conosci un modo più semplice?
Risposte:
No, non ne conosco uno.
Se vuoi mantenere la directory originale per qualche motivo (ACL, ecc.) E invece vuoi davvero svuotarla, puoi fare quanto segue:
del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"
Questo rimuove prima tutti i file dalla directory, quindi rimuove in modo ricorsivo tutte le directory nidificate, ma nel complesso mantiene la directory di primo livello così com'è (eccetto per il suo contenuto).
Notare che all'interno di un file batch è necessario raddoppiare %
all'interno del for
ciclo:
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
con il percorso, possibilmente usando le virgolette intorno all'intera cosa, se necessario.
del c:\destination\*.* /s /q
ha funzionato per me. Spero che funzioni anche per te.
del *.*
del "../../server/front-end\*.*"
Penso che il modo più semplice per farlo sia:
rmdir /s /q "C:\FolderToNotToDelete\"
L'ultima "\" nel percorso è la parte importante.
mkdir C:\FolderToNotToDelete
stato sufficiente per me :)
Sì! Usa Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Per eliminare il file:
del PATH_TO_FILE
Per eliminare la cartella con tutti i file al suo interno:
rmdir /s /q PATH_TO_FOLDER
Eliminare tutti i file da una cartella specifica (non eliminare la cartella stessa) è un po 'complicato. del /s *.*
non può eliminare le cartelle, ma rimuove i file da tutte le sottocartelle. Quindi sono necessari due comandi:
del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
Puoi creare uno script per eliminare quello che vuoi (cartella o file) in questo modo 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%
Pochi esempi di utilizzo:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Una semplice opzione di una riga consiste nel creare una directory vuota da qualche parte nel file system, quindi utilizzare ROBOCOPY
( http://technet.microsoft.com/en-us/library/cc733145.aspx ) con il/MIR
interruttore per rimuovere tutti i file e sottocartelle. Per impostazione predefinita, robocopy non copia la sicurezza, quindi gli ACL nella cartella principale dovrebbero rimanere intatti.
Probabilmente si desidera anche impostare un valore per /r
l'opzione Riprova , perché il numero predefinito di tentativi è 1 milione.
robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
Avevo una cartella indice con 33 cartelle che necessitavano di rimuovere tutti i file e le sottocartelle al loro interno. Ho aperto una riga di comando nella cartella dell'indice e poi ho usato questi comandi:
for /d in (*) do rd /s /q "%a" & (
md "%a")
Li ho separati in due righe (premi invio dopo la prima riga e quando ne viene chiesto di aggiungere una seconda riga) perché se inserito su una singola riga potrebbe non funzionare. Questo comando cancellerà ogni directory e quindi ne creerà una nuova vuota, rimuovendo così tutti i file e le sottocartelle nella directory originale.
Vai alla directory principale
Elimina le sottocartelle
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
devi usare popd
anche. Sfortunatamente, popd
non funziona quando elimini la directory. Quindi, devi fare cd
invece di pushd
.
prova questo, questo cercherà in tutta MyFolder nella directory principale ed eliminerà tutte le cartelle denominate MyFolder
for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
del .\*
Questo comando elimina tutti i file e le cartelle dalla navigazione corrente nella riga di comando.