2017-03-01 5 views
-2

私はパワーポイントのプレゼンテーションをたくさん持っており、私はそれらのすべてのイメージを抽出する必要があります。私はすべての画像が置かれている 'Media'フォルダを含んでいることに気づいた(WinRarを使ってPPTファイルを開くことによって)。すべてのファイルの 'Media'フォルダを各ファイルの個々のフォルダに抽出するための形式はありますか?PowerShellスクリプトを使用して多数の.PPTファイルからメディアフォルダを抽出する方法は?

+0

ファイルがpptxではなくpptファイルであることを確認できますか? @ JamesC。 –

+0

ダニエルはWinRarでそれらを開き、メディアフォルダを見ることができるので、.pptファイルではなく.pptxでなければなりません。 PPTは、ファイル拡張子ではなく、PowerPointの略語として使用されることがあります。 –

+0

そうです、それはPPTxです。 –

答えて

3

私はこれを書いていますは本当にです。より良い方法があれば、あるいは後にしていることを達成するためのよりクリーンな方法があれば驚かないでしょう。埋め込みメディアフォルダがあるかどうかの両方で動作するように書かれています。

テスト目的のために、デスクトップにpptxと呼ばれるフォルダを4つの* .pptxファイルとともに作成しました。クイックスクリプトが完了すると、同じフォルダ内の各PowerPointファイル用のフォルダが作成されました。それらのフォルダのそれぞれに、後にあるファイルを含むメディアフォルダ、またはメディアフォルダが見つからなかったことを示すテキストファイルがあります。繰り返しますが、きれいな方法がありますが、それまではこれはうまくいくはずです。

$Path = 'C:\users\tommymaynard\Desktop\pptx' 
$Files = Get-ChildItem -Path $Path 

Foreach ($File in $Files) { 
    New-Item -Path $File.DirectoryName -ItemType Directory -Name $File.BaseName | Out-Null 

If (Get-Command -Name Expand-Archive) { 
    Expand-Archive -Path $File.FullName -OutputPath $File.FullName.Split('.')[0] 

} Else { 
    Add-Type -AssemblyName System.IO.Compression.FileSystem 
    [System.IO.Compression.ZipFile]::ExtractToDirectory($File.FullName,$File.FullName.Split('.')[0]) 
} # End If-Else. 

If (Test-Path -Path "$($File.FullName.Split('.')[0])\ppt\media") { 
    Move-Item -Path "$($File.FullName.Split('.')[0])\ppt\media" -Destination $File.FullName.Split('.')[0] 
    Get-ChildItem -Path $File.FullName.Split('.')[0] | Where-Object {$_.Name -ne 'media'} | Remove-Item -Recurse 

} Else { 
    Get-ChildItem -Path $File.FullName.Split('.')[0] | Remove-Item -Recurse 
    New-Item -Path $File.FullName.Split('.')[0] -ItemType File -Name 'No media folder.txt' | Out-Null 
} # End If-Else. 
} # End Foreach. 

編集:.NETを使用して展開し、アーカイブよりそうはるかに高速です!速度があなたの後で、Expand-Archiveを含むPowerShellのバージョンを実行している場合は、Get-Command -Name Expand-Archiveを$ true -eq $ falseに変更して強制的に.NETを使用します。どちらかというと、最初のIf-Elseをダンプして、.NETコードを抜き出してください。

Edit2:私はこのブログ記事を自分のブログに書いています:http://tommymaynard.com/extract-media-folder-from-powerpoint-files-2017/。それは私のコードの更新版を持っています。

関連する問題