Wyciąganie potrzebnych danych z pliku .txt.

0

Cześć!

Mam plik .txt z danymi, które należy oczyścić z niepotrzebnych rzeczy. Oto przykład ciągu danych:


**// Sound\hgkghj\ghjhjg\fdgfg\dsddsg5.mp3 **
{
**exampleexampleexampleexampleexampleexampleexampleexample **
}

rubbishrubbishrubbishrubbishrubbishrubbishrubbishrubbishrubbishrubbish

{

}

**// Sound\ewtetet\ghfjj\jjkhj\jjjhjkj.mp3 **
{
exampleexampleexampleexampleexampleexampleexample
}

rubbishrubbishrubbishrubbish

{

}

// Sound\dfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
{
exampleexampleexampleexampleexampleexampleexample
}

rubbishrubbishrubbishrubbishrubbishrubbish

{

}


Dane które chcę wydobyć są pogrubione i mają być zapisane w jednym pliku .txt w takim schemacie:

**// Sound\iiiiftug\dgfdg\fdfgdfg\kjkjhkjk.mp3 **
exampleexampleexampleexampleexampleexampleexample

// Sound\pppppppdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\mmmmmmmmmmmmdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

(czyli całość 1 i 3 wiersza każdego ciągu)

Za każdym razem linie graniczne pętli zaczynają się od // Sound ... i kończą się na }. Znak } pojawia się w części zbędnej, a // Sound za każdym razem oznacza start pętli.

Wiecie jak to rozwiązać? W razie jakiś wątpliwości z chęcią dookreślę szczegóły.

Pozdrawiam Paweł

P.S: Chodzi o zautomatyzowanie rozwiązania problemu, sposób czy język jest mniej istotny.

1

Najprostszy skrypt vbs:

filename = "C:\roboczy\plik.txt"
destfile = "c:\roboczy\wynik.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename)
set w = fso.CreateTextFile(destfile,true)
i=-100
Do Until f.AtEndOfStream
	l = f.ReadLine
	if left(l,2)="//" then
		i=1
		w.writeline l
	end if
	if i=3 then
		w.writeline l
	end if
	i=i+1
Loop

f.Close
w.close
1

Najprostszy skrypt zgodny z POSIX:

#!/bin/sh
sed -n '\%^// Sound%{p;n;n;G;p}' "$@"
0

Kontynuując wątek, posiadam już plik .txt o takiej strukturze:

// Sound\iiiiftug\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\pppppppdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\mmmmmmmmmmmmdfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

// Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

oraz to samo w wersji bez oddzielającego pustego wiersza.

Podzieliłem go też na oddzielne pliki .txt nazwane "1","2","3","4" i tak dalej, aż do końca zbioru. Każdy z plików zawiera więc dwa wiersze tego typu :

// Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3
exampleexampleexampleexampleexampleexampleexample

Celem przedsięwzięcia jest automatyczne umieszczanie wierszy drugich (example) do plików audio o podkreślonej nazwie np. Sound\lllllllllllldfgsg\dgfdg\fdfgdfg<u>kjkjhkjk.mp3</u> w postaci meta danych Tytuł. Ścieżki Sound\dsdf\dfsdf są już nieaktualne, ale nazwy plików pozostają takie same (oczywiście posiadam wszystkie te pliki audio).

Dla wyjaśnienia dodam, że pliki audio to nagrana mowa, a "example" to transkrypcja do nich.

Myślę, że należy zacząć od oczyszczenia nieaktualnej już ścieżki oraz dodania aktualnej. Być może, możliwe jest podanie samego katalogu w którym znajdują się wszystkie pliki audio (ich nazwy muszą pozostać niezmienne).

0

No to kombinuj, naj prościej będzie znaleźć jakieś narzędzie np. https://squell.github.io/id3/
i wygenerować plik bat:

id3 -t "exampleexampleexampleexampleexampleexampleexample" Sound\lllllllllllldfgsg\dgfdg\fdfgdfg\kjkjhkjk.mp3

lub uruchamiać taki plik bezpośrednio z poziomu vbscriptu

1 użytkowników online, w tym zalogowanych: 0, gości: 1