#Odpalamy Excela i otrzymujemy COMowy obiekt, który będzie nam dawał do niego dostęp. $ex=new-object -com Excel.Application #Domyślnie Excel jest niewidoczny więc pokazujemy jego okno. $ex.visible=$true #Tworzymy nowy skoroszyt. Funkcja Add pobiera jeden parametr określający szablon. Ponieważ chcemy, żeby został użyty szablon domyślny używamy klasy Value z przestrzeni nazw System.Reflection.Missing $wbs=$ex.Workbooks.Add([System.Reflection.Missing]::Value) #Pobieramy listę plików MP3 z napędu Z: $pliki=get-childitem Z:\ -recurse *.mp3 #Inicjujemy zmienną numerującą wiersze w Excelu. $i=1 #Tworzymy obiekt powłoki. To za jego pomocą będziemy wyciągać tagi z plików MP3. $sa = new-object -com Shell.Application #Tworzymy tablicę z identyfikatorami interesujących nas tagów. $props = @{ Title = 10; Artist = 16; AlbumTitle = 17; Year = 18; TrackNumber = 19; Genre = 20; Duration = 21; BitRate = 22;} #Jedziemy po wszystkich obiektach z kolekcji reprezentującej znalezione pliki. foreach ($plik in $pliki) { #Z obiektu pliku wyciągamy wartość (string) zawierającą pełną ścieżkę do niego. $path = $plik.FullName #Wyciągamy katalog pliku. [string]$dir = parse-path $path #Wyciągamy nazwę pliku (bez katalogu) [string]$file = parse-path $path -leaf #Do shellowego obiektu, który wcześniej utworzyliśmy wpisujemy katalog. $myFolder = $sa.Namespace($dir) #Następnie wyciągamy obiekt reprezentujący plik. $fileobj = $myFolder.Items().Item($file) #Teraz przychodzi czas na pobranie tytułu utworu (10). $v = $myFolder.GetDetailsOf($fileobj,10){ #Tworzymy zmienną do indeksowania komórek w Excelu. [string]$k="A" + $i #Wybieramy komórkę. $ex.ActiveSheet.Range($k).Select() #Wpisujemu do komórki odczytaną wartość tagu. $ex.ActiveCell.FormulaR1C1 = $v #Powtarzamy całą operację, tylko teraz do komórek w kolumnie B wpisujemy wykonawcę a w kolumnie C tytuł albomu. $v = $myFolder.GetDetailsOf($fileobj,16) [string]$k="B" + $i $ex.activesheet.range($k).select() $ex.ActiveCell.FormulaR1C1 = $v $v = $myFolder.GetDetailsOf($fileobj,17) [string]$k="C" + $i $ex.activesheet.range($k).select() $ex.ActiveCell.FormulaR1C1 = $v #Przechodzimy do następnej linii. $i++ }