获取名称为变量

时间:2016-08-29 11:22:16

标签: powershell batch-file

我想获取图片的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命令将其读入批处理文件。

1 个答案:

答案 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