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, 2002 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
LAN, WAN, Wireless
Hat On Networks PL500PS WLAN-Funktion? (4)

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

iOS
IOS 10.2 bringt SOS-Funktion aufs iPhone

Link von sabines zum Thema iOS ...

JavaScript
If Funktion mit wildcards in google sheets script (3)

Frage von Stoffn zum Thema JavaScript ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...