首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归删除文件夹中的文件,而不通过Powershell提示用户

递归删除文件夹中的文件,而不通过Powershell提示用户
EN

Stack Overflow用户
提问于 2013-07-29 20:41:58
回答 3查看 3.5K关注 0票数 0

我目前正在尝试删除名为Local的文件夹中的所有文件。下面的脚本可以这样做,但它会在PowerShell窗口中提示用户。如果我附加了-Force标记,那么我的脚本将删除所有文件夹中的所有文件。我不知道如何删除本地文件夹中的所有文件,而不提示用户。下面是正在讨论的脚本。

代码语言:javascript
复制
$Path = "C:\Program Files (x86)\folder1\folder2\"

Function Clear-Cache
{
    Get-ChildItem 'C:\Users\Admin\Documents\GI Studies' -File -Recurse | Where-Object {$_.FullName -match "data\\local"} | % {del $_.FullName #-Force}
}

Clear-Cache
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-29 21:01:50

您可以首先对要从其中删除文件的目录(Ies)进行递归搜索,然后对每个目录中的文件执行非递归删除。

代码语言:javascript
复制
Function Clear-Cache
{
    $localFolders = Get-ChildItem 'C:\Users\Admin\Documents\GI Studies' -Directory -Recurse | Where-Object {$_.FullName -match 'data\\local$'}

    $localFolders |% { dir $_.FullName -File | del -Force }
}

编辑在搜索文件时使用目录的FullName

票数 3
EN

Stack Overflow用户

发布于 2013-07-30 15:20:35

代码语言:javascript
复制
Function Clear-Cache
{
    $localFolders = Get-ChildItem 'C:\Users\Admin\Documents\GI Studies' -Directory -Recurse | Where-Object {$_.FullName -match 'data\\local$'}

    $localFolders |% { dir $_.Fullname -File | del -Force }
}

.FullName附加到建议代码的第5行实际上解决了我的问题。谢谢你拉特金帮我!

票数 0
EN

Stack Overflow用户

发布于 2014-11-19 09:34:21

您还可以使用.NET Delete()函数,它不要求确认:

代码语言:javascript
复制
$Path = "C:\folder"
$exclude = "file1.txt","file2.txt"

Get-ChildItem -Path $Path -Include * -Exclude $exclude -Recurse | foreach {
    $_.Delete()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17933800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档