如何在没有确认的情况下使用PowerShell删除文件?

Pro*_*7en 5 powershell

我试图使用任务计划程序使下面的PowerShell脚本工作.问题是它不会删除任何文件.

当我手动运行它时,需要在删除文件之前进行确认.

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"):
Run Code Online (Sandbox Code Playgroud)

如何编辑此脚本以删除文件而不进行任何确认,以便我可以使用任务管理器运行它?

#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "10"
#----- define folder where files are located ----#
$TargetFolder = "D:\Shares\Downloads\TV\AutoDL"
#----- define extension ----#
$Extension = "*.*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)

#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}

foreach ($File in $Files) 
{
    if ($File -ne $NULL)
    {
        write-host "Deleting File $File" -ForegroundColor "DarkRed"
        Remove-Item $File.FullName | out-null
    }
    else
    {
        Write-Host "No more files to delete!" -foregroundcolor "Green"
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*agg 11

您需要添加-Confirm:$false到Remove-Item命令以覆盖默认的确认行为.如果做不到,请尝试添加-Force.

  • 当存在文件夹时,由于某种原因,这对我不起作用。 (2认同)

小智 7

它说

未指定递归参数。如果您继续,所有儿童都将随该物品一起被移除。你确定你要继续吗?

尝试: Remove-Item ./folderToDelete -Force -Recurse


wot*_*324 6

我认为Remove-Item -Path "C:\Temp\FolderToDelete" -Confirm:$false -Force应该没有任何提示就可以正常工作。但事实并非如此。

要删除整个文件夹及其中的所有内容而没有任何提示,我必须使用GCI并进行升级。所以代替:

Get-ChildItem -Path "C:\Temp\FolderToDelete" | Remove-Item -Recurse -Confirm:$false -Force
Run Code Online (Sandbox Code Playgroud)

这将删除FolderToDelete内的所有内容,但不会删除父文件夹。

要删除父文件夹及其中的所有内容而没有提示,我做了以下操作:

Get-ChildItem -Path "C:\Temp\" -Directory -Filter "FolderToDelete" | Remove-Item -Recurse -Confirm:$false -Force
Run Code Online (Sandbox Code Playgroud)

请注意尾部的'\' -Path C:\Temp\。

高温超导


小智 6

Remove-Item foldertodelete -Recurse -Force -Confirm:$false
Run Code Online (Sandbox Code Playgroud)

为我工作。

  • 一个陷阱...我相信该项目/对象是一个文件夹/目录,也包含文件,然后不包含“-Recurse”而包含“-Confirm:$ false”将导致确认。仔细查看确认信息,因为它的开头是“<some-folder-pathname> 处的项目有子项,并且未指定 Recurse 参数。”有关缺少“-Recurse”开关的信息。 (6认同)
  • -Confirm:$false 具有误导性,...默认为 false,问题不在于 -Confirm,而在于 -Recurse(仅 -Recurse) (3认同)

小智 5

删除文件文件夹\子文件夹D:\FOLDER(下面是我的示例),任何超过 30 天的文件。

Get-ChildItem -Path "D:\FOLDER\" -Recurse |? {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item -Recurse -Force -confirm:$false -Verbose
Run Code Online (Sandbox Code Playgroud)

将-Force -Confirm:$false保证您不必按Y或A每次删除文件或文件夹的时间。在-Verbose什么被删除显示器。