PowerShell:旋转多个图像文件并将其保存到具有新名称的目录中

时间:2015-03-17 14:06:33

标签: variables powershell rotation pipe

我对powershell很新(我刚刚在当地的大学学习了一个学期)。我有一个目录,其中有很多图像文件(.WMF)不断更新,我需要编写一个脚本来获取这些文件,将它们保存到一个新目录,并将它们旋转90度并添加“_90.wmf”结局。我已经搜索了一段时间,并想出了一个将旋转图像的小代码,但我无法将其保存到新目录。有什么帮助吗?

if (Test-Path J:\CutRite\v90\Import\MV_Nest_PTX_copy)

{

   [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

   foreach($file in (ls "J:\CutRite\v90\Import\MV_Nest_PTX_copy\*.wmf")){

       $convertfile = new-object System.Drawing.Bitmap($file.Fullname)

       $convertfile.rotateflip("Rotate90FlipNone")

       $newfilname = ($file.Fullname)

       $convertfile.Save($newfilname, "wmf")

       $file.Fullname

   }  

}
else
{
   Write-Host "Path not found."
}

1 个答案:

答案 0 :(得分:0)

你快到了,你只需要正确创建新的文件名:

if (Test-Path J:\CutRite\v90\Import\MV_Nest_PTX_copy)
{
   [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
   foreach($file in (ls "J:\CutRite\v90\Import\MV_Nest_PTX_copy\*.wmf")){
       $convertfile = new-object System.Drawing.Bitmap($file.Fullname)
       $convertfile.rotateflip("Rotate90FlipNone")
       $newfilename = $file.Fullname.replace(".wmf","_90.wmf")
       $convertfile.Save($newfilname)
   }  
}

您可以使用System.String的replace方法将.wmf更改为_90.wmf并将其存储在$newfilename变量中,然后使用该名称保存图像。

另外,不确定你为什么要加载System.Windows.Forms - 除非你在一个你没有包含的片段中使用它,否则你不需要它。

更新

如果您想完全保存到其他目录:

$newfilename = "C:\path\to\new\dir\" + $file.name.replace(".wmf","_90.wmf")