【问题标题】:How to create destination folder with date appended to it via Powershell?如何通过Powershell创建附加日期的目标文件夹?
【发布时间】:2020-10-30 01:48:59
【问题描述】:

我有一个目录中的备份文件。我想要实现的目标是,每次我针对该目录运行这段 Powershell 时,我希望它把文件移动到一个创建的文件夹中,并将今天的日期附加到它上面。我试过这个:

Get-ChildItem -Path 'C:\API\APIBackups' | ForEach-Object {
    Move-Item -Path $_.FullName -Destination "C:\Users\Admin\Desktop\New folder\$($_.BaseName,(Get-Date).ToString("MMddyyyy"),$_.Extension)"
}

所有这一切都是将备份文件移动到“新文件夹”并将日期附加到文件本身。我希望它创建一个新文件夹,并将今天的日期附加在“新文件夹”中,并将备份文件放在那里。任何帮助都会很棒。

【问题讨论】:

    标签: windows powershell sysadmin


    【解决方案1】:

    其中一个逗号不属于,但“代码”的每个部分都需要自己的子表达式。您还将日期粘贴在基本文件名和文件扩展名之间,因此您看起来想要在文件名中插入日期。相反,您可以将其调整为此。

    Get-ChildItem -Path 'C:\API\APIBackups' | ForEach-Object {
        Move-Item -Path $_.FullName -Destination "C:\Users\Admin\Desktop\New folder$((Get-Date).ToString("MMddyyyy"))\"
    }
    

    除非你重命名文件,否则你不需要在路径中指定它。

    重要提示请注意,如果该文件夹不存在,您需要先创建它。否则,您最终会得到一个具有该名称的无扩展名文件。您可以先测试路径,如果不存在则创建,然后移动。

    Get-ChildItem -Path 'C:\API\APIBackups' | ForEach-Object {
        $newfolder = "C:\Users\Admin\Desktop\New folder$((Get-Date).ToString("MMddyyyy"))\"
        if(-not(Test-Path $newfolder)){
            $null = New-Item -Path $newfolder -ItemType Directory
        }
        Move-Item -Path $_.FullName -Destination $newfolder
    }
    

    $null 是隐藏New-Item 默认创建的输出。

    改进建议是使用Join-Path 构建新文件夹路径

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 2013-06-09
      • 1970-01-01
      相关资源
      最近更新 更多