[源码] powershell 实现新建目录或重命名源目录

247 阅读1分钟

一、功能概述

本源码的最终目的是获得一个指定名称的文件夹。流程图如下:

graph TD
start(开始) --> con1{目标文件夹是否存在?} --目标存在--> end1(结束)
con1--目标不存在---> con2{判断正则是否匹配}--正则匹配到目录--> con3[匹配次数大于1?]--匹配大于1次-->end1
con2 --不存在正则匹配的目录--> op2[创建目标文件夹] --> end1
con3 --存在1次正则匹配的目录--> op3[重命名匹配到的目录为目标目录名] -->end1

二、源码分享

param($target, $regex)

$exitDir = Test-Path $target -PathType Container
echo "Target exists:"$exitDir
if(!$exitDir){
    echo "Target not exists"
    $dirListMatched = @()
    if($regex -ne $null){
        $dirListMatched = Get-Item $regex
    }
    if($dirListMatched.Count -eq 0){
        echo "TargetReg not matched"
        New-Item $target -ItemType Directory
    }elseif($dirListMatched.Count -eq 1){
        echo "TargetReg matched 1 times"
        Move-Item $dirListMatched[0] $target
    }else{
        echo "TargetReg matched more than 1 times, exit!!!"
        exit
    }
}
echo "Already exist..."

三、简单使用举例

将上述源码保存到createDir.ps1文件中,

  • 执行./createDir.ps1 d:\abcd
    直接在d盘根目录创建abcd文件夹。
  • 执行./createDir.ps1 d:\1234 d:\abcd
    如果d盘根目录存在abcd文件夹,则将abcd重命名为1234; 不存在则直接创建123目录。
  • 执行./createDir.ps1 d:\finished d:\12*
    如果d盘根目录存在12开头的文件夹,则将12开头的目录重命名为finished; 不存在12开头的文件夹则直接创建finished目录。