脚本从一个特定的文件夹中删除文件夹和子文件夹充满子文件夹

我有一个文件夹(用户)充满了我们用来在用户之间进行临时传输的用户文件夹。 我希望能够安排一个脚本清空用户文件夹的内容,而无需删除用户文件夹或更改权限。

有没有办法通过batch file做到这一点? 我原本以为我可以用这样的东西:

del / F \ Users **。*

但是这没有用。

请帮忙!

谢谢!

你在Server 2012上…你有大约0个使用批处理的理由。

这里有一些Powershell:

Foreach($_ In Get-ChildItem C:\Users -Recurse) { If(!$_.PSIsContainer) { Remove-Item $_.Fullname } } 

这将删除C:\ Users目录树内和下的所有文件,但会使所有目录保持不变。

编辑:

这个怎么样:

 Foreach($_ In Get-ChildItem C:\Users) { If($_.PSIsContainer) { Get-ChildItem $_.FullName -Recurse | Remove-Item } } 

所以现在我们要做的是获取C:\ Users下的“第一级”目录列表,然后recursion清除每个文件夹的内容,最后只留下C :\用户和它下面的第一级子目录。

编辑:既然你提到,你想更好地理解这一点,但对Powershell来说是新的,我将在一个更详细的解释上面的脚本。

Get-ChildItem C:\Users基本上就像C:\> dir C:\Users在DOS中一样,但Powershell以对象forms处理和返回所有内容,而不仅仅是简单的控制台输出。 所以通过第一行阅读

Foreach($_ In Get-ChildItem C:\Users)

这意味着我们要对C:\ Users中存在的每个“对象”进行循环。 由于我们在这里没有使用-Recurse参数,所以Powershell将仅返回C:\ Users的一级目录列表,而不会深入到子目录中。

If($_.PSIsContainer)是一个If语句,意思是“如果这个当前对象的”PSIsContainer“属性设置为True,这只是一个说”如果这是一个目录“的奇特方式,那么进入这个if循环。

因此,对于C:\Users下的每个子目录,我们将进入If循环。 假设C:\Users有三个子目录: C:\Users\joeC:\Users\kateC:\Users\bill 。 这些子目录下可能有许多文件和子目录。

所以我们将进入If循环3次,所以每次看起来像这样:

Get-ChildItem <C:\Users\joe> -Recurse | Remove-Item

Get-ChildItem <C:\Users\kate> -Recurse | Remove-Item

Get-ChildItem <C:\Users\bill> -Recurse | Remove-Item

该行所做的是获取该子目录的内容,并指定-Recurse开关,以便遍历joekatebill所有子目录。

然后,它将所有这些子对象和pipe道移动Remove-Item ,并且可以将Remove-Item看作del一个奇特别名。 它删除所有的东西。

合理?