如何使用 rmdir 删除 Windows 目录?

Posted

技术标签:

【中文标题】如何使用 rmdir 删除 Windows 目录?【英文标题】:How can I remove a Windows directory with rmdir? 【发布时间】:2012-12-11 09:48:11 【问题描述】:

如何使用 rmdir 删除目录?

目录为空,但我无法移除/删除它。

$root_dir = "C:/xampp/htdocs/";    
$dir = $root_dir.'tmp/';    
rmdir($dir);

【问题讨论】:

php 和/或 Apache 是否有删除权限? Windows 权限比 Unix 上的权限要细得多。确保将 error_reporting 一直调到 -1。 检查该文件夹的文件权限,可能你没有权限删除它 可能你里面有隐藏文件,或者你没有删除权限? 也许这个答案***.com/a/1217032/1741542 有帮助。 试试 rd 命令,它可能会给你更多关于失败的信息。 【参考方案1】:

让我惊呆了一会儿的重要考虑:确保您没有将chdir() 放入您要删除的目录,如果您这样做了,请先将chdir() 取出。您不能删除 Windows 上的当前工作目录。

【讨论】:

谢谢,这让我很烦。但是,有什么选择呢? 在删除前将chdir() 转移到其他地方 :)【参考方案2】:
function removedir($dirname)

    if (is_dir($dirname))
    $dir_handle = opendir($dirname);
    if (!$dir_handle)
    return false;
    while($file = readdir($dir_handle)) 
        if ($file != "." && $file != "..") 
            if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
            else
            
                $a=$dirname.'/'.$file;
                removedir($a);
            
        
    
    closedir($dir_handle);
    rmdir($dirname);
    return true;

【讨论】:

【参考方案3】:

如果权限不是问题,则 tmp 目录中可能包含文件。 rmdir 只删除空目录。使用此功能删除目录+所有文件:

function deleteDirectory($dir) 
    if (!file_exists($dir)) return true;
    if (!is_dir($dir)) return unlink($dir);
    foreach (scandir($dir) as $item) 
        if ($item == '.' || $item == '..') continue;
        if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false;
    
    return rmdir($dir);

查看http://us3.php.net/manual/en/function.rmdir.php#91797 以供参考:)

【讨论】:

以上是关于如何使用 rmdir 删除 Windows 目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]

如何用rmdir删除文件夹?

#Windows# 删除桌面删除不了文件夹

Windows 技术篇 - 无需确认快速删除包含大量文件的目录,cmd删除文件的rmdirdelerase和rd四种命令使用方法

45如何使用python删除一个文件?

rmdir命令的作用是