无法删除 Azure 中的目录

Unable to delete a directory in Azure

我在 Azure 中有一个文件共享,里面有文件夹,里面又有很多文件夹。 我试图通过右键单击文件夹手动删除文件夹,里面有很多文件,它说

Failed to delete directory. Error: The specified directory is not empty.

如何删除目录?目录下有几千个文件要删除,一个个文件都不能手动删除才能删除目录

只需将它从您所连接的机器上移除即可。

Remove-Item -Recurse -Force "your directory"

更新:

您可以使用 Azure Storage Explorer(请参阅 this article 了解如何安装和使用它。),然后导航到您的文件共享 -> 右键单击​​该文件夹 -> select 删除。这可以删除一个 non-empty 文件夹。

或者您可以使用 AzCopy(参见 here for more details about this tool) with azcopy remove 命令和 --recursive 参数。


原文:

无法删除 Azure 文件共享中的 non-empty 文件夹,您应该先删除其中的所有文件。

请考虑为此编写一些代码。还有一个article which uses powershell to delete a non-empty folder. Here is the powershell code used in this article(you can also find the source code in github here):

function RemoveFileDir ([Microsoft.Azure.Storage.File.CloudFileDirectory] $dir, [Microsoft.Azure.Commands.Common.Authentication.Abstractions.IStorageContext] $ctx)
{   
    $filelist = Get-AzStorageFile -Directory $dir
    
    foreach ($f in $filelist)
    {   
        if ($f.GetType().Name -eq "CloudFileDirectory")
        {
            RemoveFileDir $f $ctx #Calling the same unction again. This is recursion.
        }
        else
        {
            Remove-AzStorageFile -File $f           
        }
    }
    Remove-AzStorageDirectory -Directory $dir
    
} 


#define varibales
$StorageAccountName = "Your Storage account name" 
$StorageAccountKey = "Your storage account primary key"
$AzShare = "your azure file share name"
$AzDirectory = "LatestPublish - your directory name under which you want to delete everything; including this directry"
 
 

#create primary region storage context
$ctx = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$ctx.ToString()

#Check for Share Existence
$S = Get-AzStorageShare -Context $ctx -ErrorAction SilentlyContinue|Where-Object {$_.Name -eq $AzShare}

# Check for directory
$d = Get-AzStorageFile -Share $S -ErrorAction SilentlyContinue|select Name

if ($d.Name -notcontains $AzDirectory)
{
    # directory is not present; no action to be performed
    
}
else
{    
    $dir = Get-AzStorageFile -Share $s -Path $AzDirectory    
    RemoveFileDir $dir $ctx    
}

尝试使用 Azure CLI

export CONN_STRING="<YOUR-CONNECTION-STRING>"

az storage share delete \
   --connection-string $CONN_STRING \
   --name filesharename
  1. 使用虚拟机连接到您的 Azure 容器(如果是文件共享,则转到文件共享 > 连接 > 并按照命令粘贴到您的虚拟机中 - 以连接到文件共享)。
  2. 在虚拟机命令界面中连接到您的容器(cd <您容器的位置)。
  3. 删除文件夹 (rm -rf)。