Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MP3 Sortieralgorithmus

Frage Entwicklung Batch & Shell

Mitglied: SaranaDimicarus

SaranaDimicarus (Level 1) - Jetzt verbinden

16.06.2014 um 10:12 Uhr, 1591 Aufrufe, 9 Kommentare

Hallo Community,

ich versuche mir per Power-Shell einen einfachen Sortieralgorithmus für meine MP3 Downloads zu erstellen. (Falls die Frage aufkommt... Nein es sind keine Raubkopien... ich nehme mir mit spezieller Software Lieder, die über Webradios gespielt werden, legal auf.) Da ich eine extrem gute Verbindung habe können dies innerhalb eines Arbeitstages schon 5-10k Mp3´s sein. Jetzt wollte ich mir ein Programm schreiben das 2 Textdateien abarbeiten soll und die Einträge in der "OK" Liste in einen neuen Ordner verschieben und die Einträge in der "NichtOK" Liste einfach löschen. Mein Programm funktioniert jetzt bereits soweit, das es mir die Bands aus der OK liste in einen Ordner verschiebt.

Ich habe mal mein "Programm" unten angefügt und konkret handelt es sich um die Teile mit "=>". Hier will ich, dass ein Ordner mit dem namen der Band angelegt wird. (also im Ordner TEST existiert dann ein Ordner z.B.: "Black Sabbath"). Nur finde ich im Internet irgendwie gerade nicht, wie ich den Befehl MD mit einer Variablen kombinieren soll %$Band% oder %band% funktionieren irgendwie auch nicht
Ach ja bitte ned allzuarg lachen das ist mein erstes Programmierprojekt

Hier nun das Progrämmchen...

$array =Get-content d:\Projekt\OKListe.txt
$counter = 0
$newDirectory = 0
$mp3="*.mp3"

do{

$newDirectory = $array[$counter]
$newDirectory = $newDirectory.replace("*"," ")
$newDirectory = $newDirectory.replace("?"," ")
$Band =$array[$counter]+$mp3


if ((Test-Path F:\test) -ne $True)
{
new-item F:\test -ItemType directory
}

=> move-item -path d:\projekt\$Band -destination F:\test
=> md f:\test\$Band
$counter++

}
while ($counter -le $array.count-1)


Mitglied: SaranaDimicarus
16.06.2014 um 11:59 Uhr
hallöchen...

ich wusste wenn ich hier poste hab ich es n paar minuten später selbst rausgefunden -.-

also für denjenigen den es interessiert... ich habs jetzt so gelöst...

new-item -path F:\Test\ -name $Band -type directory

ich würde gerne aber das Thema nicht nicht als gelöst einstellen, da mich trotzdem eure Kommentare/verbesserungen an meinem Code interessieren. Ich komme morgen dann wieder und schließe den Thread

danke nochmals fürs lesen :D
Bitte warten ..
Mitglied: Xaero1982
16.06.2014 um 13:23 Uhr
Hi,

gibt es nur, wenn du Code-Tags benutzt. <"code"> und <"/code"> ohne "" -> oben auf Bearbeiten klicken und bitte anpassen.

Gruß
Bitte warten ..
Mitglied: colinardo
17.06.2014, aktualisiert um 12:01 Uhr
Moin Sarana, Willkommen auf Administrator.de!
Ach ja bitte ned allzuarg lachen face-smile das ist mein erstes Programmierprojekt face-smile
Machen wir nicht, ließe sich aber auf eine Zeile reduzieren (wenn ich deinen Code richtig interpretiert habe):
01.
gc "d:\Projekt\OKListe.txt" | %{$bandDIR = "F:\Test\$_"; if(!(Test-Path $bandDIR )){md $bandDIR -Force}; move-item "D:\projekt\$_*.mp3" $bandDIR -Force}
Viel Spaß bei entziffern

p.s. die Variable $newDirectory verwendest du nirgendwo ... ?

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
17.06.2014, aktualisiert um 11:58 Uhr
[OT]
Hi Xaero,
Zitat von Xaero1982:
gibt es nur, wenn du Code-Tags benutzt. <"code"> und <"/code"> ohne "" -> oben auf
Bearbeiten klicken und bitte anpassen.
ein kleiner Tipp nebenbei : Du kannst die Code-Tags hier im Text auch richtig ausschreiben:

<code> Quelltext </code>

dazu schreibst du diese mit einem Dummy folgendermaßen:

515d99895e469e63a5671527848b3fd7 - Klicke auf das Bild, um es zu vergrößern

[/OT]

Grüße Uwe
Bitte warten ..
Mitglied: SaranaDimicarus
18.06.2014 um 07:09 Uhr
So danke erstmal für die vielen Antworten bin leider gestern nicht mehr zu einer Antwort gekommen

das mit dem gekürzten Code probier ich dann gleich mal aus und auch das mit den Tags meine Vorgehensweise war halt folgende... ich hab mir überlegt was gemacht werden soll und dann hab ich solange gegoogelt und ausprobiert bis das codeschnipsel das getan hat was ich will... und dann hab ich es in mein "Programm eingebaut". Daher kommt es auch das die Variable $NewDirectory noch nirgens benutzt worden ist

na ich probier alles mal aus und geb dann nochmal bescheid obs geklappt hat

danke nochmals und ich wünsche euch einen schönen Tag.

Sandra
Bitte warten ..
Mitglied: SaranaDimicarus
23.06.2014 um 09:56 Uhr
Sooo jetzt habe ich an meiner Lösung weitergebastelt... Bei mir dauert das halt immer ein bischen, da ich 2 Kinder habe die einfach vorgehen (4Jahre und der andere 5 Monate)

Der Einzeiler hat leider nicht so funktioniert wie er sollte... bei einem Datensatz in der OKListe hat er keine mucken gemacht... sobald aber mehr Datensätze drinnen waren hat er die Verzeichnisse angelegt, jedoch alle Mp3´s die im Ausgangsverzeichnis drinnen waren kopiert ohne eine auswahl zu treffen. Aber hat mir doch n paar nette Hilfestellungen zu meinem Code gebracht

der sieht inzwischen so aus:

#Globale Variablen
#
$array =Get-content d:\Projekt\OKListe.txt
$zielDIR = "F:\test"
$startDIR = "D:\projekt"
$counter = 0
$newDirectory = 0
$mp3=".mp3"


do{

#Hier wird der Bandname aus dem Array ohne * und ? (die für das kopieren später wichtig sind)
#dargestellt. Aus Black?Sabbath* wird Black Sabbath
#Originalbezeichung der z.B.: Alice Cooper - Poison 1989.mp3
#Problem... ähnliche Bandnamen z.B.: ACDC, AC/DC, AC DC, AC_DC => ? und *
#
$newDirectory = $array[$counter]
$newDirectory = $newDirectory.replace("*"," ")
$newDirectory = $newDirectory.replace("?"," ")
$newDirectory = "$zielDIR\$newDirectory"

#komplette MP3 Bezeichung mit .mp3
#
$band ="$array[$counter]+$mp3"
write-output "Ausgabe Variable Band: $band"
Write-Output "Counter $Counter"

#Hier werden die Bandspezifischen Ordner festgelegt
#
  1. F:\Test\Black Sabbath
$zielDIRBand = "$zielDIR\$newDirectory"
#PASST! write-output "Ausgabe variable zielDIRBand: $zielDIRBand"
  1. D.\projekt\black?Sabbath*.mp3
$zielITEMS = "$startDIR\$Band"
write-output "Ausgabe variable zielITEMS: $zielITEMS"

#Hier wird überprüft, ob es schon einen Ordner gibt. Wenn nicht wird er angelegt
#
if (!(Test-Path $zielDIRBand))
{
md $newDirectory -Force
}

#Hier werden die MP3 der speziefischen Band in den Bandordner verschoben/kopiert.
#
copy-item $zielITEMS $zielDIRBand
$counter++

}
while ($counter -le $array.count-1)


***

Das funktioniert inzwischen ganz gut... habe ich aber mehrere verschiedene Dateien in meiner OKListe klappt der zugriff auf das Array nicht mehr... Daraufhin hab ich versucht die Ausgaben meiner Variablen mittels "write-output" auszulesen. (daher auch meine Meinung das nur da Array probleme macht). Ich füge es jetzt noch mit an und bin mir sicher, das ihr mir da helfen könnt :D

Ach eine frage noch... wie kann ich denn in meinem "programm" ein anderes Programm aufrufen? (nur so aus interesse)

So nun hier die Ausgaben meiner Variablen

Mode LastWriteTime Length Name
------------- ------ ----
d---- 20.06.2014 10:49 Masters Of Metal ,
Ausgabe Variable Band: Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[1]+.mp3
Counter 1
Ausgabe variable zielITEMS: D:\projekt\Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[1]+.mp3
d---- 20.06.2014 10:49 Platzhalter ,
Ausgabe Variable Band: Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[2]+.mp3
Counter 2
Ausgabe variable zielITEMS: D:\projekt\Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[2]+.mp3
d---- 20.06.2014 10:49 Accept ,
Ausgabe Variable Band: Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[3]+.mp3
Counter 3
Ausgabe variable zielITEMS: D:\projekt\Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[3]+.mp3
d---- 20.06.2014 10:49 Alice Cooper ,
Ausgabe Variable Band: Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[4]+.mp3
Counter 4
Ausgabe variable zielITEMS: D:\projekt\Masters?Of?Metal*, Platzhalter*, Accept*, Alice?Cooper*, Black?Sabbath*,[4]+.mp3
d---- 20.06.2014 10:49 Black Sabbath ,
Bitte warten ..
Mitglied: colinardo
23.06.2014, aktualisiert um 10:37 Uhr
naja ohne das wir genauere Spezifikationen bzw. Beispiele aus deinem Textfile bzw. deines Vorhabens haben, schwer deine Ansprüche exakt umzusetzen.
Und bitte nutze Code-Tags für deinen Quellcode: <code> Quellcode </code>, ansonsten kommen uns hier eventuell wichtige Sonderzeichen abhanden, hatten wir aber oben schon zwei mal erwähnt!
Ach eine frage noch... wie kann ich denn in meinem "programm" ein anderes Programm aufrufen? (nur so aus interesse)
http://social.technet.microsoft.com/wiki/contents/articles/7703.powersh ...
"C:\deinprogramm.exe"
start-process "C:\Deinprogramm.exe"
und schau dir bitte mal das foreach() Konstrukt an dann brauchst du das Gebastel mit dem do while und dem counter nicht:
foreach($line in $array){ 
  ... 
}
Bitte konsultiere zuerst diese Referenzen, für einen Grundkurs in Powershell ist das Forum eigentlich zu schade ... ich fahr ja auch kein Auto ohne Führerschein
Powershell Grundlagen- und Praxisvermittlung:

Viel Erfolg
Grüße Uwe
Bitte warten ..
Mitglied: SaranaDimicarus
23.06.2014 um 14:17 Uhr
ah sorry das mit dem <code> hab das völlig vergessen -.- mea culpa...

ich verlange hier ja keinen Grundkurs in Powershell... ich habe mir das Programm ja unter hilfenahme von Internetquellen soweit hingebogen... es läuft ja soweit nur das es dieses Problem mit dem Array gibt...

und klar ohne führerschein fahr ich nicht auto... aber ich hoffe du setzt dein kind nicht in das auto und sagst... üb du mal selber.. hier ist die Betriebsanleitung vom auto :D sondern schickst ihn in die Fahrschule wo ihm geholfen wird :D und den Fahrschullehrer darf man dann bestimmt auch was fragen :P

ich mach das halt immer so wies im Internet steht und wenns nicht klappt probier ich andere sachen aus... und wenn die nicht klappen frage ich hier nach...dachte das wäre soweit ok...

und wie die MP3 Benennungen aussehen hab ich ja auch in die # Eingetragen... das mit dem Txt-File ist evtl etwas schwer zu verstehen aber da steht nix anderes drinnen wie

Alice?Cooper*
AC?DC*
Accept*
usw...

wenn ihr der meinung seit das gehört nicht ins forum dann ist das auch ok... dann entschuldige ich mich, das euch mit meinen profanen Frauenproblemen belästigt habe
Bitte warten ..
Mitglied: SaranaDimicarus
02.07.2014 um 10:47 Uhr
Hallo ihr alle,

das Programm funktioniert... habs hinbekommen... :D
danke nochmals für alle eure Tipps... werd mich dann evtl darum kümmern den Quallcode zu optimieren und vielleicht auch die DO-While schleife gegen das foreach ersetzen... für die, die es auch interessiert... hier der funktionierende (zugegebenermaßen nicht so optimierte) Quellcode

#Globale Variablen
#
$array =Get-content d:\Projekt\OKListe.txt
$zielDIR = "F:\test"
$startDIR = "D:\projekt"
$counter = 0
$newDirectory = 0
$mp3="mp3"

write-output "Arrayinhalt: $array"
write-output "Anzahl der Elemente im Array:"
$array.count

do{

#Hier wird der Bandname aus dem Array ohne * und ? (die für das kopieren später wichtig sind)
#dargestellt. Aus Black?Sabbath* wird Black Sabbath
#Originalbezeichung der z.B.: Alice Cooper - Poison 1989.mp3
#Problem... ähnliche Bandnamen z.B.: ACDC, AC/DC, AC DC, AC_DC => ? und *
#
$newDirectory = $array[$counter]
$newDirectory = $newDirectory.replace("*"," ")
$newDirectory = $newDirectory.replace("?"," ")
$newDirectory = "$zielDIR\$newDirectory"

#komplette MP3 Bezeichung mit .mp3
#
#Variable Band hat das Endformat )=> Accept*.mp3
$band = $array[$counter]
$band = "$band.$mp3"
write-output "Ausgabe Variable Band: $band"
Write-Output "Counter $Counter"

#Hier werden die Bandspezifischen Ordner festgelegt
#
  1. F:\Test\Black Sabbath
$zielDIRBand = "$newDirectory"
write-output "Ausgabe variable zielDIRBand: $zielDIRBand"
  1. D.\projekt\black?Sabbath*.mp3
$zielITEMS = "$startDIR\$Band"
write-output "Ausgabe variable zielITEMS: $zielITEMS"

#Hier wird überprüft, ob es schon einen Ordner gibt. Wenn nicht wird er angelegt
#
if (!(Test-Path $zielDIRBand))
{
md $newDirectory -Force
}

#Hier werden die MP3 der speziefischen Band in den Bandordner verschoben/kopiert.
#
copy-item $zielITEMS $zielDIRBand
$counter++

}
while ($counter -le $array.count-1)

danke euch allen nochmal..
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Microsoft
gelöst Win 10 Edu N - Thumbnail bei MP3 anzeigen (4)

Frage von Richard97 zum Thema Microsoft ...

Windows Mobile
gelöst Klingelton mit einem MP3 einrichten (1)

Frage von michael1306 zum Thema Windows Mobile ...

Mac OS X
Musik zu MP3 Konvertieren (7)

Frage von gamerff zum Thema Mac OS X ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...