如何解决变量不拾取文件的创建日期时间的问题?



如果我犯了业余错误,我很抱歉,因为我对PowerShell很陌生。

最近,我的任务是构建一个PowerShell脚本,将自动生成的文件归档到基于年份(例如,2022)的文件夹中,然后是日期范围(例如,220601 - 220610)。由于源文件夹本身有许多文件,所以我决定使用foreach来循环遍历每个单独的文件,注意它们的创建日期时间也可能不同。

$FileCreationTime = $file.CreationTime
$YearMonthDate = $FileCreationTime.ToString("yyMMdd")
$MonthDate = $FileCreationTime.ToString("MMdd")
$YearMonth = $FileCreationTime.ToString("yyMM")
$Year = $file.CreationTime.ToString("yyyy")
$Month = $FileCreationTime.ToString("MM")
$Day = $FileCreationTime.ToString("dd")
$files = Get-ChildItem “C:Test Folder*.xml”
foreach($file in $files)
{...}

但是,此方法将变量$FileCreationTime改为文件夹(Test folder)的创建日期时间。有办法解决这个问题吗?提前感谢您的回复。

$file没有在代码示例的开头定义。变量赋值不会在每个文件中更新,除非将它们移动到循环体中。:

$files = Get-ChildItem “C:Test Folder*.xml”
foreach($file in $files)
{
$FileCreationTime = $file.CreationTime
$YearMonthDate = $FileCreationTime.ToString("yyMMdd")
$MonthDate = $FileCreationTime.ToString("MMdd")
$YearMonth = $FileCreationTime.ToString("yyMM")
$Year = $file.CreationTime.ToString("yyyy")
$Month = $FileCreationTime.ToString("MM")
$Day = $FileCreationTime.ToString("dd")
# Now move the file into a folder based on e. g. $Year
}

最新更新