无法删除 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
- 使用虚拟机连接到您的 Azure 容器(如果是文件共享,则转到文件共享 > 连接 > 并按照命令粘贴到您的虚拟机中 - 以连接到文件共享)。
- 在虚拟机命令界面中连接到您的容器(cd <您容器的位置)。
- 删除文件夹 (rm -rf)。
我在 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
- 使用虚拟机连接到您的 Azure 容器(如果是文件共享,则转到文件共享 > 连接 > 并按照命令粘贴到您的虚拟机中 - 以连接到文件共享)。
- 在虚拟机命令界面中连接到您的容器(cd <您容器的位置)。
- 删除文件夹 (rm -rf)。