我目前正在尝试删除名为 Local 的文件夹中的所有文件。下面的脚本执行此操作,但它会在PowerShell窗口中提示用户。如果我附加-Force
标志我的脚本然后删除所有文件夹中的所有文件。我不确定如何删除 Local 文件夹中的所有文件而不提示用户。以下是相关脚本。
$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
答案 0 :(得分: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
答案 1 :(得分: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
附加到建议代码的第五行实际上解决了我的问题。谢谢你拉特金协助我!
答案 2 :(得分:0)
您也可以使用.NET Delete()函数,它不会要求确认:
$Path = "C:\folder"
$exclude = "file1.txt","file2.txt"
Get-ChildItem -Path $Path -Include * -Exclude $exclude -Recurse | foreach {
$_.Delete()
}