正在加载中...

关闭
请选择需要拨打的号码
关闭
请根据问题类型选择QQ咨询

Windows服务器怎样使用Powershell批量删除指定文件夹中的文件和文件夹?

Windows服务器怎样使用Powershell批量删除指定文件夹中的文件和文件夹?

我们在日常运维中,经常需要定期清理临时存放文件的文件夹,以下使用Powershell删除指定文件夹下的所有内容。我们可以使用powershell的remove-item的指令,但这个指令太长了,我们可以使用他的别名:

Remove-Item 别名ri、rd、erase、rm、rmdir、del,都是在DOS和LINUX中常见的删除指令。

 

Powershell代码如下: view plain copy

$TargetFolder = "Z:\Test"   
$Files = get-childitem $TargetFolder -force  
Foreach ($File in $Files)  
{  
$FilePath=$File.FullName  
Remove-Item -Path $FilePath -Recurse -Force  
}


进一步地,可以使用任务计划定期执行脚本,这样就可以实现自动清理临时文件夹内容了。

 

 以上脚本无法删除带转义字符的文件(夹),需要将-Path改成-LiteralPath;

实例:
del -path D:\wwwroot\ABC.com\xinwen\ -Recurse -Force


更多使用实例:


删除一个文件或文件夹(或其它输入的目标)

Remove-Item cmdlet 正好顾名思义:它能使你清除一个东西和所有东西。清除文件C:/Script/test.txt ?那就删除它:

Remove-Item c:/scripts test.txt

你也可以使用通配字符删除多个项目。举个例子,这个命令会删除所有在 C:/Scripts 里的文件 :

Remove-Item c:/scripts/*

这里是一个捕捉,当然。假设C:/Script包含替代的文件夹。在这种情况下,你可以提示是否要真的想要删除在Scripts文件夹里的任何东西。

Confirm
The item at C:/test/scripts has children and the 
-recurse parameter was not specified. 
If you 
continue, all children will be removed with the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [
?] Help
(
default is "Y"):

有快速绕过这个的方法吗?对;只要在你的命令结尾处附加 -recurse 参数:

Remove-Item c:/scripts/* -recurse

这是一个有趣的变化。假设这个Scripts文件夹包含了一大堆文件和你想要删除的所有东西。等等:也许不是所有的东西,也许想要留下什么 .wav文件。 没问题;只要使用 -exclude 参数并打入要说明的文件应该把它排出删除:

Remove-Item c:/scripts/* -exclude *.wav

那是什么?现在你仅仅想要删除 .wav 和 .mp3 文件,保留其它所有类型?你不得不要求(使用 -include 参数):

Remove-Item c:/scripts/* -include .wav,.mp3

当你想通后,如果你使用 -include 参数 cmdlet 将运行在那些指定项目的一部分参数上(不错,你可以指定多个项目;只要分开时用逗号)。相比之下,如果你使用 -exclude 参数排除这些项目将免除cmdlet的行动。

是的,如果你想得到真正喜欢的,你可以使用 -include 与 -exclude 在同一个命令中。你认为在运行这个命令的时候会发生什么?

Remove-Item c:/scripts/* -include *.txt –exclude *test*

你懂得:在C:/Scripts文件夹里所有的 .txt 文件(当用 -include 参数标明时)都将被删除,除了一些在文件名为test字符值的任何文件名(当用 -exclude 参数标明时)。尝试一些不同的变化,不久它将变的很完美。

顺便说一下,Remove-Item cmdlet 有一个 -whatif 参数,这实际上并不能删除任何东西,但能告诉你会发生什么,如果你使用 Remove-Item。没有任何有用的意义那你是什么意思?这里,你先看看这个命令:

Remove-Item c:/scripts/*.vbs -whatif

如果我们运行这个命令,在文件夹C:/Scripts里所有 .vbs 类型的文件将会删除;当然我们会得到像这样返回的如下信息,让我们知道哪个文件被删除,如果你使用 Remove-Item 外部的 -whatif 参数:

What if: Performing operation "Remove File" on Target "C:/scripts/imapi.vbs".
What 
if: Performing operation "Remove File" on Target "C:/scripts/imapi2.vbs".
What 
if: Performing operation "Remove File" on Target "C:/scripts/methods.vbs".
What 
if: Performing operation "Remove File" on Target "C:/scripts/read-write.vbs
"
.
What if: Performing operation "Remove File" on Target "C:/scripts test.vbs".
What 
if: Performing operation "Remove File" on Target "C:/scripts/winsat.vbs".

除此之外,你可以删除其它的文件和文件夹。举个例子,任命一个show别名来获取这个清除命令:

Remove-Item alias:/show

做一个说明,如这个具体位置:alias:/ 。这是 Windows PowerShell 驱动的标准记号法。驱动字母,然后冒号,然后由一个"/" 。

 

英文原文:http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/remove-item.mspx



返回上一页