下面的代码让我感到困惑...我要在这里做的是检查日期...如果当前日期不存在(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
}
答案 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