我尝试从iPhone上的文件访问文件创建的时间信息,当它连接到我的Windows笔记本电脑时。我已经将一个成功完成的小型PowerShell测试脚本放在一起,但有一个小缺点:函数Folder.GetDetailsOf(..., 4),它返回文件的创建时间,不包括秒......(示例输出)将是" 18/03/2017 21:58"。)
如何让Folder.GetDetailsOf()返回秒?
我尝试过应用不同的文化(语言环境):
这些似乎都不起作用......但是,函数Get-Date适用于新文化。这两个函数之间的主要区别在于Folder.GetDetailsOf是通过COM对象(Shell.Application)运行的,而Get-Date则不是。如果使用不同的文化确实是要走的路,那我怎么能将它们应用到COM对象呢?
Function Using-Culture (
[System.Globalization.CultureInfo]$culture = (throw “USAGE: Using-Culture -Culture culture -Script {scriptblock}”),
[ScriptBlock]$script= (throw “USAGE: Using-Culture -Culture culture -Script {scriptblock}”)
) {
$OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
trap {
[System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
}
[System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
Invoke-Command $script
[System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
}
$currentThread = [System.Threading.Thread]::CurrentThread
[System.Globalization.CultureInfo] $culture = "nl-NL"
$culture.DateTimeFormat.LongTimePattern = 'HH:mm:ss'
$culture.DateTimeFormat.ShortTimePattern = 'HH:mm:ss'
$culture.DateTimeFormat.FullDateTimePattern = 'dd MMMM, yyyy HH:mm:ss'
$currentThread.CurrentCulture = $culture
$currentThread.CurrentUICulture = $culture
Using-Culture $culture {
# This outputs the date in Dutch, using the format above;
# if the format above is changed, then Get-Date's output does too
Get-Date
$path = 'C:\Windows\System32\notepad.exe'
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)
# GetDetailsOf() on the other hand is oblivious to the newly set culture
$shellfolder.GetDetailsOf($shellfile, 4)
}
从我的iPhone上复制视频时,文件在我的笔记本电脑上获得了新的创建时间,因此我失去了原始(实际)时间。修改后的时间会被复制,但并不总是正确的。 (不太清楚为什么,这种情况有时也会发生在拍摄后我不对视频做任何事情的时候。)
为了修复创建时间,我希望从视频中提取创建时间,而仍然在手机上,所以我可以将它们写入文件,稍后再次获取它们。
当然也欢迎任何其他有关如何解决这个问题的建议:)