You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell循环删除文件夹脚本:实现回车终止无报错需求

修复PowerShell删除文件夹脚本的回车终止问题

先给你修复后的可正常终止且无报错的脚本:

do {
    $destination = 'E:\TestEnv\deleted_images\'
    $ListFile = 'E:\TestEnv\deleted_images\' 
    Get-ChildItem $ListFile
    $Foldername = Read-Host -Prompt "Please Enter Folder name to be deleted"
    
    # 直接按回车时终止脚本
    if ([string]::IsNullOrEmpty($Foldername)) {
        Write-Host "脚本已终止"
        break
    }

    $FilePath = Join-Path $ListFile $Foldername
    $FileExists = Test-Path $FilePath 

    if ($FileExists) {
        Remove-Item $FilePath -Recurse -Force
        Write-Host "文件夹 $Foldername 已成功删除"
    }
    else {
        Write-Host "未找到指定文件夹:$Foldername"
    }
} while ($true)

关键修改点说明:

  1. 变量名统一修正:原脚本里混用了$Foldername和$FileName,导致路径拼接错误,现在全部统一为$Foldername,确保路径生成正确。
  2. 空输入直接终止:增加了空值判断,当你直接按回车时,$Foldername为空,脚本会直接跳出循环,不会执行后续的删除逻辑,避免报错。
  3. 删除命令优化:使用拼接好的完整路径$FilePath执行删除,同时加上-Recurse -Force参数,确保能删除包含子文件/子文件夹的目标目录,避免因目录非空导致的删除失败。
  4. 循环逻辑简化:把循环条件改为while($true),由内部的break控制终止,逻辑更直观易懂。

原脚本报错原因:

原脚本回车时,$Foldername为空值,循环条件$Foldername -match '.+'不成立,循环本应终止,但终止前会执行Remove-item $Foldername——因为$Foldername是空的,PowerShell会报错找不到要删除的对象。而你的移动脚本之所以没报错,是因为回车时$Filename为空,Test-Path返回false,不会执行move-item命令,所以没触发错误。

内容的提问来源于stack exchange,提问作者sanjacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:53:19