我们在日常运维中,经常需要定期清理临时存放文件的文件夹,以下使用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