- 締切済み
エクスプローラーの表示内容をテキストで取得するには
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kteds
- ベストアンサー率42% (1883/4441)
「フォルダにあるファイル全件について、一覧形式でテキストファイルとして取得したい」 ということですね。 下記のスクリプトを拡張子 ps1 として作成して、 PowerShellで実行すればいいです。 "フォルダ名"と"ファイル名"は自分の環境に合わせて指定してください。 結果は指定した"ファイル名"のファイルに「ファイル名」と「長さ」の一覧リストを取得できます。 実際の結果は添付画像参照。 -------------------- $targetDirectory = "フォルダ名" #フォルダ名をフルPATHで指定 $targetFiles = (Get-ChildItem $targetDirectory).fullname foreach($targetFile in $targetFiles) { $folderPath = Split-Path $targetFile $fileName = Split-Path $targetFile -Leaf $shell = New-Object -ComObject Shell.Application $shellFolder = $shell.namespace($folderPath) $shellFile = $shellFolder.parseName($fileName) #ファイル詳細プロパティ 27番目の値(長さ)を取得 $propertyValue = $shellFolder.getDetailsOf($shellFile, 27) $outtxt = $fileName + " " + $propertyValue Write-Host $outtxt add-content "ファイル名" -value $outtxt #ファイル名をフルPATHで指定 } --------------------
- NuboChan
- ベストアンサー率47% (790/1658)
>テキストとして取得したいのすが、 >簡単に取得する方法はありますでしょうか。 求められているか不明ですが ExcelのVBAで動画のプロパティを調べて再生時間を取得できます。 後は、再生時間がセルに表示されるのでテキストファイルにコピペする。 以下基本のコードを記載します。 Sub Test01() Dim Shel As Object, Foldr As Object Dim Target As String, cnt As Long Const Path As String = "D:\test\" ' ← 実際のフォルダパスを指定 Set Shel = CreateObject("Shell.Application") Set Foldr = Shel.Namespace(Path) Target = Dir(Path & "*.mp4") ' ← 実際の動画の拡張子を指定 Cells(2, 1) = "[ファイル名]" Cells(2, 2) = "[再生時間]" cnt = 1 Do While Target <> "" cnt = cnt + 1 Cells(cnt, 1) = Foldr.GetDetailsOf(Foldr.ParseName(Target), 0) ' ファイル名 Cells(cnt, 2) = Foldr.GetDetailsOf(Foldr.ParseName(Target), 27) '長さ=再生時間 Target = Dir() Loop Set Foldr = Nothing: Set Shel = Nothing ActiveSheet.Cells.Columns.AutoFit Application.ScreenUpdating = True End Sub
お礼
回答ありがとうございました。
お礼
回答ありがとうございました。