更改文件夹的“修改日期”(可能是PowerShell)


0

有时,当我强制关闭Windows Server 2003计算机时(我别无选择),某个目录中包含的文件夹都将其“修改日期”更改为当前日期。

幸运的是,在每个文件夹中,文件都具有正确的“修改日期”。

我想复制“修改(或创建)日期”的其中一个文件是每个文件夹都在里面的.jdf文件。

我需要帮助才能在PowerShell中创建脚本。

我发现这个PS1脚本几乎完成了这项工作:

Get-ChildItem $root | Where-Object {$_.PSIsContainer} | Foreach-Object{

# get the oldest file for the current directory object
$oldest = Get-ChildItem $_.FullName | Sort-Object LastWriteTime | Select-Object LastWriteTime -Last 1

if($oldest)
{
# oldest object found, set current directory LastWriteTime
$_ | Set-ItemProperty -Name CreationTime -Value $oldest.LastWriteTime 
$_ | Set-ItemProperty -Name LastWriteTime -Value $oldest.LastWriteTime
}
else
{
# current directory is empty, directory LastWriteTime is left unchanged
Write-Warning "Directory '$($_.FullName)' is empty, skiping..."
}
}

问题是文件夹中最后修改的对象有时是子文件夹,它们也将当前日期作为“修改日期”。 如何让它看起来文件夹中的文件而不是文件夹?


你的目标对我来说有点不清楚:所需的脚本应该产生什么效果 究竟 ? (请不要评论; 编辑 相反,你的问题。)但是, NTFS 只要在其中创建或删除对象(文件或文件夹),特定文件夹的日期和时间戳就会更改。
JosefZ

@JosefZ:我刚刚编辑了添加脚本的帖子。我希望现在更清楚了。谢谢
poupou

Answers:


0

Get-ChildItem $root -directory 给出了相同的结果

Get-ChildItem $root | Where-Object {$_.PSIsContainer}

你可以试试(我不知道 PS 详细语法)

Get-ChildItem $root -file

甚至

gci $root -file

不确定你的脚本是否需要改进......


我尝试添加“-directory”,我收到一个错误:Get-ChildItem:找不到与参数名称'directory'匹配的参数。在第1行:char:31 + Get-ChildItem $ root -directory<<<< | Where-Object {$ _.PSIsContainer} |的foreach对象{
poupou
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.