我想获取图片的Date Taken
参数(由NAME_OF_AN_IMAGE
变量标识为PATH_TO_IMAGE_FOLDER
常量)并将其传递给主批处理脚本;在批处理脚本中,我必须使用Powershell指令(不可能通过cmd命令直接获取Date Taken
)。
我必须向Powershell脚本提供NAME_OF_AN_IMAGE
变量,同时绕过受限制的执行策略。
简而言之,应该从Powershell脚本返回指定图像的日期,并将其设置为批处理文件中的Date
变量。
我在Powershell'DateTaken.ps1'脚本中有以下几行命令:
[reflection.assembly]::LoadWithPartialName("System.Drawing");
$imagePath = "PATH_TO_IMAGE_FOLDER\NAME_OF_AN_IMAGE.JPG";
$pic=New-Object System.Drawing.Bitmap $imagePath;
$DATE = $pic.GetPropertyItem(36867).value[0..9];
$strYear = [Char]$date[0],[Char]$date[1],[Char]$date[2],[Char]$date[3];
$strMonth = [Char]$date[5],[Char]$date[6];
$strDay = [Char]$date[8],[Char]$date[9];
$DateTaken = $strYear + "." + $strMonth + "." + $strDay;
并在批处理文件中:
我无法运行上面列出的Powershell指令集,以便访问$DateTaken
变量并将其分配给批处理脚本中的Data变量。
如果我获得上述Powershell指令的集合以返回Data
的值,我将能够使用grater而不是'&gt;将其传递到temp.txt文件中。 temp.txt'然后通过set /p Data< temp.txt
命令将其读入批处理文件。
答案 0 :(得分:0)
我认为你的问题是,该集需要一个字符串,并且脚本中的$ DateTaken包含一个数组。另一件事是,你必须输出$ DateTaken。
这就是我所做的,这个脚本将日期输出为String。
[reflection.assembly]::LoadWithPartialName("System.Drawing");
$imagePath = "C:\temp\pic2.jpg"
$pic=New-Object System.Drawing.Bitmap $imagePath
$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 = $strYear + "." + $strMonth + "." + $strDay
$DateTaken
谢谢@ MathiasR.Jessen
更短 - 更多powerhellway:)
[reflection.assembly]::LoadWithPartialName("System.Drawing");
$imagePath = "C:\temp\pic2.jpg"
$pic=New-Object System.Drawing.Bitmap $imagePath
$picDate = $pic.GetPropertyItem(36867).value[0..9]
$DateTaken = [char[]]$picdate -join '' -replace '\D','.'
$DateTaken