如何创建一个文件夹和子文件夹来跟踪当年

时间:2019-01-14 21:42:31

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

下面的代码让我感到困惑...我要在这里做的是检查日期...如果当前日期不存在(2020年,并且没有2020文件夹),则创建2020文件夹。否则,如果是2019年并且没有2020文件夹,则创建2020文件夹。

第二步...进入一个文件夹..是2020,没有2020 \ 01-一月文件夹…然后将去年的12-12月复制到2020 \ 01-一月文件夹中...如果是2019,则没有2020 \ 01-一月文件夹,然后将今年12月12日复制到2020 \ 01-一月文件夹。

这就是我所拥有的...但是我的头脑正变得一团糟,试图保持一切顺畅。我很确定这是我的逻辑可能崩溃的第二个if语句。

我也不知道如何在没有新年的情况下对此进行测试。 =)

# Edited to reflect code fix as I understand it.
$arubaBuildsRootPath = "***"
$oldMonth = "12 - December"
#$year = Get-Date -UFormat "%Y"
$year = (Get-Date).year
$newMonth = "01 - January"
$newYear = $year + 1
$oldYear = $year - 1

if( -Not (Test-Path -Path $arubaBuildsRootPath\$year ) )
{
    New-Item -ItemType directory -Path $arubaBuildsRootPath\$year
}
Else 
{
    New-Item -ItemType directory -Path $arubaBuildsRootPath\$newYear
}

if( -Not (Test-Path -Path $arubaBuildsRootPath\$year\$newMonth ) )
{
    Copy-Item -Path "$arubaBuildsRootPath\$oldYear\$oldMonth\" -Destination "$arubaBuildsRootPath\$newYear\$newMonth" -recurse -Force
}
Else 
{
Copy-Item -Path "$arubaBuildsRootPath\$year\$oldMonth\" -Destination "$arubaBuildsRootPath\$newYear\$newMonth" -recurse -Force
}

1 个答案:

答案 0 :(得分:1)

我认为$year + 1代码无法按您期望的方式工作... PowerShell将$year变量视为字符串,因此+代替了1。< / p>

从本地测试中查看:

$ (get-date -UFormat '%Y')
2019

$ (get-date -UFormat '%Y')+1
20191

$ ([int](get-date -UFormat '%Y'))+1
2020

因此,我认为,如果将$year变量设置为int,则它应该可以按预期工作。

更好(根据@AnsgarWiechers的评论),只需使用当前日期的Year属性即可。则不需要特殊的格式功能。这也包含PowerShell的面向对象性质。

(Get-Date).Year + 1