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

递归删除文件夹中的文件,而不通过Powershell提示用户,powershell,powershell-3.0,Powershell,Powershell 3.0,我当前正在尝试删除名为Local的文件夹中的所有文件。下面的脚本执行此操作,但会在PowerShell窗口中提示用户。如果我附加-Force标记,则我的脚本将删除所有文件夹中的所有文件。我不知道如何删除本地文件夹中的所有文件而不提示用户。下面是讨论中的脚本 $Path = "C:\Program Files (x86)\folder1\folder2\" Function Clear-Cache { Get-ChildItem 'C:\Users\Admin\Documents\GI

我当前正在尝试删除名为Local的文件夹中的所有文件。下面的脚本执行此操作,但会在PowerShell窗口中提示用户。如果我附加
-Force
标记,则我的脚本将删除所有文件夹中的所有文件。我不知道如何删除本地文件夹中的所有文件而不提示用户。下面是讨论中的脚本

$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

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

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

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

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 }
}
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

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
添加到建议代码的第五行实际上解决了我的问题。谢谢拉金的帮助


.FullName
添加到建议代码的第五行实际上解决了我的问题。谢谢拉金的帮助

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

$Path = "C:\folder"
$exclude = "file1.txt","file2.txt"

Get-ChildItem -Path $Path -Include * -Exclude $exclude -Recurse | foreach {
    $_.Delete()
}

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

$Path = "C:\folder"
$exclude = "file1.txt","file2.txt"

Get-ChildItem -Path $Path -Include * -Exclude $exclude -Recurse | foreach {
    $_.Delete()
}

我不明白。为什么要删除所有文件夹中的所有文件?我不想删除所有文件夹中的所有文件,这就是问题所在。我不明白。为什么要删除所有文件夹中的所有文件?我不想删除所有文件夹中的所有文件,这就是问题所在。我相信只有在研究目录中运行脚本时,这才有效。我说的对吗?我相信只有当你在研究目录中运行脚本时,这才有效。我说得对吗?