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

求优化:用于文件夹重命名、创建与删除的PowerShell技术菜单

PowerShell文件夹操作菜单优化请求

我编写了一个PowerShell技术菜单,实现了文件夹的重命名、创建与删除功能,目前运行完全符合需求,希望大家提供让它更精简高效的优化思路。

以下是当前代码:

cls
function rename
{     

write-host "------------------------------------ 

Where Do You Want To Rename a Folder?:

A. Documents
B. Pictures
C. Downloads
"

$choice = read-host "Please Choose A Directory Location" 

switch($choice)

{
"A" {cd ~/Documents;$valid = $true}
"B" {cd ~/Pictures;$valid = $true}
"C" {cd ~/Downloads;$valid = $true}
default {"";$valid = $false}
}

while ($valid -eq $false)
{ if ($valid -eq $true){Break}
}

ls 
$name = read-host "
What Folder Do You Want To Rename"

$newname = read-host "Enter The New Folder Name" 

Rename-Item $name -NewName $newname

write-host "------------------------------------"  
write-host "Refreshed Directory: ------------------------------------"
ls
write-host "------------------------------------"
write-host " $name Has Been Renamed To $newname"}


function remove
{     
write-host "
------------------------------------ 
What Directory Do You Want To Delete A Folder?: 

A. Documents
B. Pictures
C. Downloads
"
$choice = read-host "Please Choose A Directory Location"  
switch($choice)
{

"A" {cd ~/Documents;$valid = $true}
"B" {cd ~/Pictures;$valid = $true}
"C" {cd ~/Downloads;$valid = $true}
default {"";$valid = $false}
}

while ($valid -eq $false){ 

if ($valid -eq $true){Break}
}

ls 

$name = read-host "What Folder Do You Want To Delete"


Remove-Item $name 
write-host "------------------------------------" 
write-host "Refreshed Directory: ------------------------------------"
ls
write-host "------------------------------------"
write-host " $name Has Been Deleted"}



function create
{     
write-host "------------------------------------ 
Where Do You Want To Rename A New Folder?:

A. Documents
B. Pictures
C. Downloads"

$choice = read-host "Please Choose A Directory Location"  

switch($choice)
{
"A" {cd ~/Documents;$valid = $true}
"B" {cd ~/Pictures;$valid = $true}
"C" {cd ~/Downloads;$valid = $true}
default {"";$valid = $false}
}
while ($valid -eq $false){
if ($valid -eq $true){Break}
}
ls 


$name = read-host "
What Is The Name Of The Folder You Want to create"  


New-Item $name 

write-host "------------------------------------" 
write-host "Refreshed Directory: ------------------------------------"

ls

write-host "------------------------------------"
write-host " $name Has Been Created!"
}

function Show-Menu
{    

    param(       
        [string]$Title = 'Directory Technical Menu' 
    )   
    cls    
    Write-Host "========== $Title =========="
    Write-Host "1. Rename a Directory"   
    Write-Host "2. Create a New Directory"   
    Write-Host "3. Delete a Directory"    
    Write-Host "4. Press 'Q or q' to quit"
}

do 
 {     
    Show-Menu     
    $condition = $flase     
    $selection = Read-Host "Please Choose an Option"     
    switch ($selection)     
    {         
        '1' {              
                rename         
       } '2' {              
                create         
       } '3' {           
                remove         
       }     
    }    
pause 
} 
until ($selection -eq 'q')

优化思路

  • 提取重复逻辑:三个操作函数里的目录选择逻辑完全一致,封装成Get-TargetDirectory函数,返回选中的目录路径,避免代码冗余。
  • 取消全局目录切换:不要用cd切换工作目录,直接将目录路径作为命令参数(比如Rename-Item (Join-Path $targetDir $name) -NewName $newname),防止影响后续操作。
  • 修复无效循环:当前的错误输入循环没有重新获取用户输入,会陷入死循环,应在循环内重新提示用户选择,直到输入有效。
  • 遵循PowerShell命名规范:函数名改用Verb-Noun格式(如Rename-Folder、Remove-Folder、New-Folder),提升可读性与规范性。
  • 添加错误处理:对文件夹操作添加try/catch块,处理文件夹不存在、权限不足等异常情况;同时验证用户输入的文件夹名称合法性。
  • 简化主循环:移除无效的$condition = $flase代码,支持大小写不敏感的退出判断(如$selection -match '^[Qq]$')。
  • 替换命令别名:用Get-ChildItem替代ls,Set-Location替代cd,提高脚本兼容性。
  • 优化输出体验:用Write-Host的颜色参数区分提示信息,或者统一输出格式,让结果更清晰。

内容的提问来源于stack exchange,提问作者Scott John Monk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:55:22