Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 2124 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
Windows Server
Druckereigenschaften - Modell und Hersteller editieren (6)

Frage von manuel-r zum Thema Windows Server ...

Batch & Shell
Problem mit Funktion und Combobox (7)

Frage von Druide83 zum Thema Batch & Shell ...

Windows 10
gelöst Startmenü .xml editieren bitte um Hilfe (6)

Frage von markaurel zum Thema Windows 10 ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (12)

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

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (11)

Frage von Spitzbube zum Thema Netzwerke ...

Voice over IP
SNOM D765 an LancomR883VAW (10)

Frage von MS6800 zum Thema Voice over IP ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...