好的,我知道问题是什么,但不知道如何解决。基本上,进程无法访问该文件,因为它以前正被相同的代码使用。idk只需要一些方法来运行这个代码或做同样的事情,而不会出现阻止我运行它的错误。
[reflection.assembly]::LoadWithPartialName("System.Drawing");
foreach ($file in Get-ChildItem)
{
$filePath = "$pwd$file"
$picDate = $pic.GetPropertyItem(36867).value[0..9]
$pic=New-Object System.Drawing.Bitmap $filePath
$strYear = [String][Char]$picdate[0]+[String][Char]$picdate[1]+[String][Char]$picdate[2]+[String][Char]$picdate[3]
$strMonth = [String][Char]$picdate[5]+[String][Char]$picdate[6]
$strDay = [String][Char]$picdate[8]+[String][Char]$picdate[9]
$DateTaken = $strDay + "/" + $strMonth + "/" + $strYear
$date1 = [datetime]::ParseExact($dateTaken,"dd/MM/yyyy",$Null)
(Get-Item $filePath).CreationTime=($date1)
}
万一你想知道它在干什么。基本上,对于目录中的每个文件,它都将creationTime替换为Date taked。
好的,我后来解决了自己的问题。原来有一行字放错地方了。
$picDate = $pic.GetPropertyItem(36867).value[0..9]
$pic=New-Object System.Drawing.Bitmap $filePath
它们应该切换,瞧,一切都正常。
[reflection.assembly]::LoadWithPartialName("System.Drawing");
foreach ($file in Get-ChildItem)
{
$filePath = "$pwd$file"
$pic=New-Object System.Drawing.Bitmap $filePath
$picDate = $pic.GetPropertyItem(36867).value[0..9]
$strYear = [String][Char]$picdate[0]+[String][Char]$picdate[1]+[String][Char]$picdate[2]+[String][Char]$picdate[3]
$strMonth = [String][Char]$picdate[5]+[String][Char]$picdate[6]
$strDay = [String][Char]$picdate[8]+[String][Char]$picdate[9]
$DateTaken = $strDay + "/" + $strMonth + "/" + $strYear
$date1 = [datetime]::ParseExact($dateTaken,"dd/MM/yyyy",$Null)
$pic.Dispose();
(Get-Item $filePath).CreationTime=($date1)
}