0

我目前正在尝试删除名为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
4

3 回答 3

3

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

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搜索文件时 使用目录编辑

于 2013-07-29T21:01:50.370 回答
0
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到建议代码的第五行实际上解决了我的问题。谢谢拉特金对我的帮助!

于 2013-07-30T15:20:35.687 回答
0

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

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

Get-ChildItem -Path $Path -Include * -Exclude $exclude -Recurse | foreach {
    $_.Delete()
}
于 2014-11-19T09:34:21.743 回答