我想删除Windows 7中批处理文件中的所有文件和子文件夹,并保留顶部文件夹。基本上清空文件夹。命令行指令是什么?
ntvdm
但是随着64位系统获得市场份额,它变得越来越不重要了。
我想删除Windows 7中批处理文件中的所有文件和子文件夹,并保留顶部文件夹。基本上清空文件夹。命令行指令是什么?
ntvdm
但是随着64位系统获得市场份额,它变得越来越不重要了。
Answers:
您可以使用del
和/S
标志(告诉它从所有子目录中删除所有文件)执行此操作:
del /S C:\Path\to\directory\*
最好的解决方案:例如,我想删除父目录的所有文件和子目录,说“ C:\ Users \ Desktop \ New folder \”。简单的方法是创建以下三个命令的批处理文件。
cd C:\ Users \ Desktop \ New文件夹\
del * / S / Q
rmdir / S / Q“ C:\ Users \ Desktop \ New文件夹\”
在这里,它将首先清除所有子目录中的所有文件,然后清除所有空子目录。由于当前工作目录是父目录,即“ \ New folder”,因此rmdir命令无法删除此目录本身。
rmdir
命令将删除New folder
导航到父目录:
pushd "Parent Directory"
删除子文件夹:
rd /s /q . 2>nul
pushd
不会在此处添加cd
尚未执行的操作。
rmdir /s path-to-folder
将删除其中包含所有内容的文件夹,但是询问者想知道如何删除工作目录中的所有内容。
rmdir "c:\pathofyourdirectory" /q /s
不要忘记使用引号,因为/q /s
它会删除所有存储库,而不会提示。
您可以使用rmdir删除文件和子文件夹,如下所示:
rmdir /s/q MyFolderPath
但是,它的速度明显更快,尤其是当您的结构中有很多子文件夹在rmdir之前使用del时,如下所示:
del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
rmdir
命令(两者相同)将删除父文件夹。这不是问题的答案。人们为什么不读书?
如果要删除文件夹中的所有文件,包括所有子文件夹,并且不依赖某些错误条件来保持根文件夹的完整性(就像我在另一个答案中看到的那样),则可以使用如下批处理文件:
@echo off
REM Checking for command line parameter
if "%~1"=="" (
echo Parameter required.
exit /b 1
) else (
REM Change directory and keep track of the previous one
pushd "%~1"
if errorlevel 1 (
REM The directory passed from command line is not valid, stop here.
exit /b %errorlevel%
) else (
REM First we delete all files, including the ones in the subdirs, without confirmation
del * /S /Q
REM Then we delete all the empty subdirs that were left behind
for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"
REM Change directory back to the previous one
popd
REM All good.
exit /b 0
)
)
然后,您只需使用以下命令调用它:
empty_my_folder.bat "C:\whatever\is\my folder"
当文件夹名称中有空格时,这对我来说效果更好。
@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (
echo Parameter required.
exit /b 1
) else (
echo ***********************************************************************************
echo *** Deleting all files, including the ones in the subdirs, without confirmation ***
del "%~1\*" /S /Q
echo ***********************************************************************************
REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
if "%%D"=="%~1\." (
echo *** Cleaning out folder: %~1 ***
) else (
echo Removed folder "%%D"
rmdir /S /Q "%%D"
)
)
REM All good.
exit /b 0
)
删除文件:
del PATH_TO_FILE
要删除其中包含所有文件的文件夹:
rmdir /s /q PATH_TO_FOLDER
从特定文件夹删除所有文件(而不是删除文件夹本身)有点复杂。del /s *.*
无法删除文件夹,但会从所有子文件夹中删除文件。因此需要两个命令:
del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"
您可以创建一个脚本来删除所需的任何内容(文件夹或文件),如下所示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%
用法示例:
mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder