我正在设置一个共享网络驱动器,该驱动器会定期清空。
其目的是为用户提供一个简单的文件共享选项。由于我无法强制他们总是自己清理,所以我希望这个驱动器定期清空。
我发现并尝试使用命令提示符:
del /q "D:\Transfer$\*"
然后是这个:
del /q "D:\Transfer$\*"
for /D %p IN (D:\Transfer$\*) DO rmdir "%p" /s /q
但这些不会删除文件夹,只会删除文件。
一些代码看起来是什么样的,删除给定文件夹的所有内容(文件夹和文件),而不删除文件夹本身?
答案1
由于您已标记PowerShell
即使您的努力和尝试使用 batch/cmd 失败 — 此 PowerShell 解决方案可以按您的喜好工作,并且由于您正在考虑“电源外壳“ 寻找潜在的解决方案。
这将获取完整明确的源文件夹路径,并递归删除源文件夹下的所有文件和所有子文件夹 -它不会删除源文件夹本身,只是其中的一切。
电源外壳
$srcPath = "D:\Transfer$";
Get-ChildItem -Path $srcPath | ForEach-Object -Process {
If($_.attributes -eq "Directory"){
Remove-Item -Path $_.FullName -Recurse -Force;
}Else{
Remove-Item -Path $_.FullName -Force;};
};
支持资源
答案2
答案3
$RemoveDir="D:\Transfer$"
$CurrentDir=(Get-Location).path
cd $RemoveDir -ErrorAction SilentlyContinue | Out-Null
if ( $CurrentDir -eq $RemoveDir ) { Remove-Item -path $RemoveDir\* -Recurse }
@echo off
cd /d "D:\Transfer$" && (
del /f /a /q .\*
for /r /d %%i in (*)do RmDir /q /s "%%~fi"
)
cd /d "D:\Transfer$" && (del /f /a /q .\* & for /r /d %i in (*)do RmDir /q /s "%~fi")