Powershell 为目录制作一个函数并在末尾添加一个前缀

Posted

技术标签:

【中文标题】Powershell 为目录制作一个函数并在末尾添加一个前缀【英文标题】:Powershell Make a function for directories and add a prefix at the end 【发布时间】:2020-11-14 03:12:55 【问题描述】:

创建一个函数,创建 3 个名为 John_S 的目录,并添加前缀并附加数字 1、2、m 例子 1.约翰_S1 2.约翰_S2 3.约翰_S3 使用循环 (ForEach) 使用变量作为迭代次数 到目前为止我所拥有的......

$DirName = "John_S"
function mulcheck New-item "$DirName"
    $i = 1
    foreach($DirName in $DirNames)
$newname = $DirName Rename-Item $($DirName) $newname $i++

【问题讨论】:

嗨,您是否打算像for ($i=1; $i -le $count; $i++) ...一样循环可变次数 嗨,我试图创建一个函数,每次运行它时,它都会创建一个目录名称“John_S”,并且每次运行相同的函数时,如果已经有一个目录名称“John_S” " 它将创建另一个带有前缀编号的同名目录。 我们还没有收到您的来信。. 作为 SO 新手,您可能不知道这一点,但习惯于单击左侧的大复选标记图标 accept the answer that solved your problem。这将帮助其他有类似问题的人更轻松地找到它,并有助于激发人们回答您的问题。 【参考方案1】:

生成数字 1 到 3 的最简单方法是使用 .. 范围运算符:

foreach($suffix in 1..3)
  mkdir "John_S$suffix"

要使函数可与 John_S 以外的其他对象一起使用,请为前缀声明 [string] 参数:

function New-Directories([string]$Prefix) 
  foreach($suffix in 1..3)
    mkdir "$Prefix$suffix"
  

【讨论】:

您好,这太棒了,但这仅允许我在每个目录中使用该功能一次。是否可以创建一个每次创建 1 个目录且前缀递增的函数? 看看你的函数,有没有在 John_S 保持不变的情况下声明后缀参数? @Jeffrie 当然,但我以为你想让函数创建 3 个不同的文件夹?那么是否希望一次接受 3 个不同的后缀,或者...?【参考方案2】:

如果我正确理解了您的最新评论,您需要一个函数来获取新文件夹的名称并检查根路径中是否已经存在具有该名称的文件夹。在这种情况下,它应该使用给定的名称创建一个新文件夹,但附加一个索引号,因此它具有唯一的名称。

为此,您可以使用以下内容:

function New-Folder 
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $false)]
        [string]$RootPath = $pwd,  # use the current working directory as default

        [Parameter(Mandatory = $true)]
        [string]$FolderName
    )
    # get an array of all directory names (name only) of the folders with a similar name already present
    $folders = @((Get-ChildItem -Path $RootPath -Filter "$FolderName*" -Directory).Name)
    $NewName = $FolderName
    if ($folders.Count) 
        $count = 1
        while ($folders -contains $NewName) 
            # append a number to the FolderName
            $NewName = "01" -f $FolderName, $count++
        
    
    # we now have a unique foldername, so create the new folder
    $null = New-Item -Path (Join-Path -Path $RootPath -ChildPath $NewName) -ItemType Directory


New-Folder -FolderName "John_S"

如果您多次运行此程序,您将创建多个文件夹,例如

【讨论】:

以上是关于Powershell 为目录制作一个函数并在末尾添加一个前缀的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 在日期末尾添加一年

循环链表并在C中的末尾函数插入

如何在 powershell 中更改目录并在该目录中运行文件?

数组函数

如何制作一个以用户定义的表类型为参数并在sql中返回相同的函数?

如何在 Python 函数中创建简单的 PyQt 弹出窗口并在其末尾关闭?