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
GELÖST

Objecthandle Funktion um Dateidetails zu editieren

Frage Entwicklung Batch & Shell

Mitglied: Sheogorath

Sheogorath (Level 2) - Jetzt verbinden

04.02.2014 um 13:52 Uhr, 2082 Aufrufe, 4 Kommentare

Moin,

im Moment Sortiere ich meine Musik neu, da ich zur Musikorganisation gerade auf den Windows Mediaplayer umsteige. Nun, die Sortierung funktioniert schon per Autoit-Script perfekt, nur würde ich nun gerne auch automatisch die Interpreten und den Titel in den Details in den dafür vorgesehen Felder eintragen.

Auslesen, ja, das habe ich gefunden, nur schreiben irgendwie nicht bzw. nur in Powershell und da auch nicht als Objecthandle Funktion.

http://powershell.com/cs/media/p/8948.aspx

jetzt versuche ich den Codeschnipsel in Autoit zu übersetzen:
01.
 $fileobject | Add-Member NoteProperty "Extended_$property" $value -force
Wie gesagt, bisher das auslesen funktioniert ja super:
01.
Func AddFileDetails() 
02.
	$oShell=ObjCreate("shell.application") 
03.
	$oFolder=$oShell.NameSpace("D:\00_Userdata\Music\David Garrett") 
04.
 
05.
	If IsObj($oFolder) Then 
06.
		$oFolderItem= $oFolder.ParseName("Zorbra's Dance.mp3") 
07.
		if IsObj($oFolderItem) Then 
08.
			For $i=1 to 34 
09.
			$oInfo=$oFolder.GetDetailsOf($oFolderItem,$i) 
10.
 
11.
			MsgBox(0, "", $oInfo) 
12.
			$oInfo=0 
13.
			Next 
14.
		EndIf 
15.
		$oFolderItem=0 
16.
	EndIf 
17.
	$oFolder=0 
18.
	$oShell=0 
19.
EndFunc
Somit konnte ich schon die Index Nummer der jeweiligen Felder schon ausfindig machen. (findet man ja auch im oben verlinkten Script)

Hat jemand eine Idee, wie man das in Autoit umsetzen kann? Ich mag dieses Cross-Scripting nicht und würde es deswegen gerne ausschließlich in Autoit umsetzen.

Gruß
Chris
Mitglied: colinardo
LÖSUNG 04.02.2014, aktualisiert 24.06.2014
Hallo Chris,
die Powershell-Funktion ist auch nur zum lesen der Attribute und Ergänzen dieser für die Anzeige in Powershell, jedoch nicht um die Eigenschaften auch wieder in die Datei zurückzuschreiben.

Eine mögliche Lösung für dein Vorhaben:

01.
$oDocument=ObjCreate("DSOFile.OleDocumentProperties") 
02.
$odocument.open("C:\test.txt") 
03.
$odocument.SummaryProperties.author ="Ich bin der Autor" 
04.
$odocument.Save 
05.
$odocument.Close
mehr dazu findest du hier:
http://technet.microsoft.com/en-us/library/ee692828.aspx

Grüße Uwe
Bitte warten ..
Mitglied: Sheogorath
04.02.2014, aktualisiert um 16:20 Uhr
Moin,

Zitat von colinardo:

Hallo Chris,
die Powershell-Funktion ist auch nur zum lesen der Attribute und Ergänzen dieser für die Anzeige in Powershell, jedoch
nicht um die Eigenschaften auch wieder in die Datei zurückzuschreiben.

Das erklärt zumindest warum ich sie nicht in Autoit abbilden kann :D

Eine mögliche Lösung für dein Vorhaben:

01.
> $oDocument=ObjCreate("DSOFile.OleDocumentProperties") 
02.
> $odocument.open("C:\test.txt") 
03.
> $odocument.SummaryProperties.author ="Ich bin der Autor" 
04.
> $odocument.Save 
05.
> $odocument.Close 
06.
> 
mehr dazu findest du hier:
http://technet.microsoft.com/en-us/library/ee692828.aspx

danke für den neuen Input, ich habe es ausprobiert, klappt leider nicht wirklich. Ich habe aber einen neuen Ansatz gefunden
http://msdn.microsoft.com/en-us/library/windows/desktop/dd563870(v=vs.8 ...

Soweit ganz schick, mein Code funktioniert auch, aber er schreibt es nicht in die Datei zurück, hast du da eine Idee?

01.
test("D:\00_Userdata\Music\David Garrett\Zorbra's Dance2.mp3", "Test") 
02.
 
03.
Func test($sPath, $sValue)$oWMP = ObjCreate("WMPlayer.OCX") 
04.
	$oMedia= $oWMP.newMedia($sPath) 
05.
	If Not ($oMedia.isReadOnlyItem("AlbumArtist")) Then 
06.
 
07.
        ;Change the attribute value. 
08.
		MsgBox(0,"",$oMedia.getItemInfo("AlbumArtist")) 
09.
        $oMedia.setItemInfo("AlbumArtist", $sValue) 
10.
    EndIf 
11.
 
12.
	If IsObj($oMedia)Then 
13.
		MsgBox(0,"","") 
14.
	EndIf 
15.
	$oMedia=0 
16.
	$oWMP.close 
17.
	$oWMP=0 
18.
EndFunc
Gruß
Chris
Bitte warten ..
Mitglied: colinardo
LÖSUNG 04.02.2014, aktualisiert um 16:36 Uhr
Zitat von Sheogorath:
danke für den neuen Input, ich habe es ausprobiert, klappt leider nicht wirklich.
Bei mir gehts einwandfrei... vermutlich hast du die DLL nicht ins "System32" Verzeichnis kopiert und mit
regsvr32 dsofile.dll
registriert...
Bitte warten ..
Mitglied: Sheogorath
04.02.2014 um 16:36 Uhr
Moin,

Zitat von colinardo:

> Zitat von Sheogorath:
> danke für den neuen Input, ich habe es ausprobiert, klappt leider nicht wirklich.
Bei mir gehts einwandfrei... vermutlich hast du die DLL nicht ins "System32" Verzeichnis kopiert und mit
> regsvr32 dsofile.dll 
> 
registriert...

stimmt, das habe ich nicht gemacht. er hat bei mir aber beim registieren rumgemeckert, dass ihm die DLL nicht passen würde, hat sich aber erledigt, ich habt es geschafft

01.
Func _FileSetProperty($sPath, $sPropertyname , $sValue) 
02.
	$oWMP = ObjCreate("WMPlayer.OCX") 
03.
	$oMedia= $oWMP.newMedia($sPath) 
04.
	If Not ($oMedia.isReadOnlyItem($sPropertyname)) Then 
05.
        ;Change the attribute value. 
06.
        $oMedia.setItemInfo($sPropertyname, $sValue) 
07.
    EndIf 
08.
	$oMedia=0 
09.
	$oWMP.close 
10.
	$oWMP=0 
11.
EndFunc
Was ich nicht gelesen habe, dass die Änderungen erst nach dem nächsten Start des Windows Media Player zurück geschrieben werden. Aber damit erfüllt es voll und ganz das, was ich brauche.

Vielen Dank für die Unterstützung, colinardo!

Gruß
Chris
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Powershell Funktion Pipeline oder nicht (4)

Frage von H41mSh1C0R zum Thema Entwicklung ...

Batch & Shell
gelöst Powershell Funktion Ausgabe in Datei (2)

Frage von schicksal zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Exchange Server
Exchange Postfach leeren - nicht löschen (11)

Frage von AndreasOC zum Thema Exchange Server ...