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

Dateieigenschaften aus der Registerkarte (Details) auslesen und als Text kopieren

Frage Entwicklung Batch & Shell

Mitglied: evinben

evinben (Level 2) - Jetzt verbinden

24.06.2014, aktualisiert 25.06.2014, 5435 Aufrufe, 13 Kommentare

Hallo,

unter Eigenschaften einer .exe-Datei gibt es auf der Registerkarte „Details“ Informationen, welche sich leider nicht kopieren lassen. Wäre es irgendwie möglich diese Informationen abzufragen?
Auf dem nachfolgenden Bild sieht man, was ich meine 213c9992d5349297262d406a009355d6 - Klicke auf das Bild, um es zu vergrößern

Etwas ähnliches macht das vbs-Skript hier:
01.
'Aufruf z. B. in der CMD wie folgt 
02.
'cscript //nologo Datei-Eigenschaften_auslesen.vbs c:\Pfad_zum_Ordner >> Dateiliste.txt 
03.
 
04.
Set objShell = CreateObject("Shell.Application") 
05.
Set objFolder = objShell.Namespace(Wscript.arguments(0)) 
06.
 
07.
For Each strFileName in objFolder.Items 
08.
    
09.
    strName = objFolder.GetDetailsOf(strFileName, 0) 
10.
	If InstrRev(strName, ".") > 1 Then strName = Left(strName, InstrRev(strName, ".") - 1) 
11.
	Wscript.echo strName & " " & objFolder.GetDetailsOf(strFileName, 14) 
12.
     
13.
Next
Hier kann man über DateCreated Property nachlesen: http://msdn.microsoft.com/en-us/library/ke6a7czx(VS.85).aspx
Und unten werden alle möglichen Eigenschaften als Referenz dazu aufgelistet:

Attributes Property
DateLastAccessed Property
DateLastModified Property
Drive Property
Files Property (FileSystemObject)
IsRootFolder Property
Name Property (FileSystemObject)
ParentFolder Property
Path Property (FileSystemObject)
ShortName Property
ShortPath Property
Size Property
SubFolders Property
Type Property

In meinem Falle müssen jedoch die Details-Informationen abgefragt werden (vor allem die Attribute Dateiversion und Produktversion).
Und im Gegensatz zu dem obigen Skript einen ganzen Ordner zu durchsuchen, plane ich nur die ausgewählten Dateien als Argument zu verarbeiten (indem ich sie einfach auf eine Batch-Datei oder vbs-Skript ziehe und loslasse, bzw. über sendto an das Skript sende) und dann z. B. in sich öffnendem CMD-Fenster oder einer txt-Datei die notwendigen Informationen herauskopiere.

Danke für paar Anregungen zur Lösung dieses Problems.

Gruß
evinben
Mitglied: colinardo
24.06.2014, aktualisiert 25.06.2014
Moin envinben,
dafür habe ich mal eine Powershell-Funktion geschrieben:
http://www.administrator.de/wissen/erweiterte-dateieigenschaften-mit-po ...

Passend dazu dann ein Aufruf mit der obigen Funktion und Anzeige nur deiner bevorzugten Eigenschaften:
dir "c:\testdatei.exe" | Add-ExtendedFileProperties | select Name,Dateiversion,Produktversion
Zusammengefasst in einer .ps1 Datei, könnte das dann so aussehen: Dem Script übergibt man als Parameter einen Dateipfad, und als Ergebnis werden alle Dateieigenschaften in die Zwischenablage kopiert. Der Aufruf erfolgt dann z.B. so "C:\copy-fileproperties.ps1" "C:\deinedatei.exe"
copy-fileproperties.ps1
01.
param( 
02.
  [parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$file 
03.
04.
 
05.
function Add-ExtendedFileProperties{ 
06.
 <# 
07.
     .SYNOPSIS 
08.
        Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu 
09.
     .DESCRIPTION 
10.
        Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails 
11.
     .EXAMPLE  
12.
            Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" | ft Name,Bildhöhe,Bildbreite,Bitrate 
13.
            Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Bitrate" als zusätzliche Spalten dem Objekt in der Pipline hinzu 
14.
     .EXAMPLE 
15.
            Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl * 
16.
            Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu 
17.
     .PARAMETER PropertyExtended 
18.
        Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten. 
19.
            -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" 
20.
#> 
21.
    param( 
22.
        [Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
23.
        $fileItem, 
24.
        [String[]] $PropertyExtended = "ALL" 
25.
26.
    begin 
27.
28.
        $shellObject = New-Object -Com Shell.Application 
29.
        $itemProperties = $null 
30.
31.
 
32.
    process 
33.
34.
        if($fileItem.PsIsContainer) 
35.
36.
            $fileItem 
37.
            return 
38.
39.
        $directoryName = $fileItem.DirectoryName 
40.
        $filename = $fileItem.Name 
41.
 
42.
        $folderObject = $shellObject.NameSpace($directoryName) 
43.
        $item = $folderObject.ParseName($filename) 
44.
 
45.
        if(-not $itemProperties) 
46.
47.
            $itemProperties = @{} 
48.
            $counter = 0 
49.
            $columnName = "" 
50.
            if ($PropertyExtended -eq "ALL"){ 
51.
                 #get all properties 
52.
                do { 
53.
                    $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) 
54.
                    if($columnName) { $itemProperties[$counter] = $columnName } 
55.
                    $counter++ 
56.
                }while($columnName) 
57.
            }else{ 
58.
                #get user defined properties 
59.
                do { 
60.
                    $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) 
61.
                    foreach($name in $PropertyExtended){ 
62.
                        if ($columnName.toLower() -eq $name.toLower()){ 
63.
                            $itemProperties[$counter] = $columnName 
64.
65.
66.
                    $counter++ 
67.
                }while($columnName) 
68.
69.
70.
 
71.
        foreach($itemProperty in $itemProperties.Keys) 
72.
73.
            $fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] ` 
74.
                $folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction ` 
75.
                SilentlyContinue 
76.
77.
        $fileItem 
78.
79.
80.
if ((Test-Path $file)){ 
81.
    $infos = dir $file | Add-ExtendedFileProperties | fl * | out-string 
82.
    [Windows.Clipboard]::SetText($infos) 
83.
    Write-host "Daten wurden in die Zwischenablage kopiert!" -ForegroundColor Green 
84.
}else{ 
85.
    write-host "Die Datei konnte nicht gefunden werden" -ForegroundColor Red 
86.
}
Grüße Uwe
Bitte warten ..
Mitglied: Eintagsfliege
24.06.2014, aktualisiert um 19:46 Uhr
Hallo evinben!

Und in VBS in etwa so:
01.
Const Liste = "D:\Temp\Namespace-Liste.txt"    'Pfad für Liste mit DetailOf-Namen und zugehöriger Nummer 
02.
 
03.
Const D_Name = 0 
04.
Const D_Dateiversion = 156 
05.
Const D_Produktversion = 271 
06.
 
07.
 
08.
'Dieser Code erzeugt eine Text-Liste mit allen DetailOf-Namen 
09.
Sub ListDetailOfNames() 
10.
    Dim objFolder, strName, strText 
11.
     
12.
    Set objFolder = CreateObject("Shell.Application").Namespace("C:\Windows") 
13.
     
14.
    For Each strName In objFolder.Items 
15.
        For i = 0 To 300 
16.
            strText = strText & Right("00" & i, 3) & " - " & objFolder.GetDetailsOf(Null, i) & vbNewLine 
17.
        Next 
18.
        Exit For 
19.
    Next 
20.
 
21.
    CreateObject("Scripting.FileSystemObject").CreateTextFile(Liste).Write strText 
22.
End Sub 
23.
 
24.
 
25.
Sub ReadDetailOfFiles() 
26.
    Dim objShell, objFolder, strFileName, strName, strDateiversion, strProduktversion 
27.
     
28.
    Set objShell = CreateObject("Shell.Application") 
29.
     
30.
    Set objFolder = objShell.Namespace(Wscript.arguments(0)) 
31.
     
32.
    For Each strFileName In objFolder.Items 
33.
        With objFolder 
34.
            strName = Split(.GetDetailsOf(strFileName, D_Name), ".")(0) 
35.
            strDateiversion = .GetDetailsOf(strFileName, D_Dateiversion) 
36.
            strProduktversion = .GetDetailsOf(strFileName, D_Produktversion) 
37.
        End With 
38.
    Next 
39.
End Sub
Grüße Dieter
Bitte warten ..
Mitglied: evinben
25.06.2014, aktualisiert um 12:42 Uhr
Hallo Uwe,

umfangreich gemacht. Danke schön für die Anleitung! Auf diese war ich bei der Recherche vor etwa drei Monaten leider nicht gestoßen.

Der Aufruf erfolgt dann z.B. so C:\copy-fileproperties.ps1 "C:\deinedatei.exe"
Wenn ich es so z. B. in der Eingabeaufforderung aufrufe, dann wird nur das Skript im Notepad geöffnet, aber die Eigenschaften werden nicht in die Zwischenablage kopiert.
Momentan muss ich das Skript über das Kontextmenü mit der Option „Mit PowerShell ausführen“ ausführen und in der Shell direkt den Pfad zur Datei eingebe und es funktioniert so. Ein Pfad ohne Anführungszeichen wird jedoch nicht akzeptiert, so wie oben angegeben wurde.
Wie könnte ich aus einer Batch-Datei so aufrufen, damit das gleiche passiert (bzw. die Ausgabe nur auf die Eigenschaften „Dateiversion“ und „Produktversion“ begrenzen)?
Und wie könnte der Text direkt in der Konsole angezeigt werden (anstatt des Kopierens in die Zwischenablage)?

Passend dazu dann ein Aufruf mit der obigen Funktion und Anzeige nur deiner bevorzugten Eigenschaften:
dir "c:\testdatei.exe" | Add-ExtendedFileProperties | select Name,Dateiversion,Produktversion

Dieser Aufruf ist für mich momentan leider ein Rätsel. Wie soll ich das Skript genau aufrufen?

Hallo Dieter,

danke schön.
Wenn ich das vbs-Skript wie folgt so ausführe
01.
GetFileProperties.vbs "file.exe"
und dabei eine Datei "Namespace-Liste.txt" im Verzeichnis "D:\Temp\" erstelle, werden keine Informationen reingeschrieben.
Bzw. korrigiere mich bitte, wie ich genau vorgehen soll.

Was machen die Zahlen hier genau, wäre dies eine Art Filter?
01.
Const D_Dateiversion = 156 
02.
Const D_Produktversion = 271
Gruß
evinben
Bitte warten ..
Mitglied: Eintagsfliege
25.06.2014, aktualisiert um 08:24 Uhr
Hallo evinben!

Das ist kein fertiges Script zur Ausführung. Die erste Sub zeigt nur, wie man per VBS die Eigenschaftsnamen ermitteln und in eine Text-Datei schreiben kann und die zweite Sub nur, wie man die Details ausliest (aktuell ohne Textexport).

und dabei eine Datei "Namespace-Liste.txt" im Verzeichnis "D:\Temp\" erstelle, werde keine Informationen reingeschrieben.
Die Datei wird vom Script unter der angegebenen Pfadangabe (z.B. "E:\Test\Dateiname) erzeugt...

Const D_Dateiversion = 156
Sind festgelegte Konstanten, die der Zahl zwecks besserer Lesbarkeit einen Namen geben:
01.
objFolder.GetDetailsOf(strFileName, 156) 
02.
'oder 
03.
objFolder.GetDetailsOf(strFileName, D_Dateiversion)
Haben beide den gleichen Effekt...

Mit diesem VB-Script kannst Du eine Liste mit Detailnamen erzeugen:
01.
'Erzeugt eine Liste (Pfad anpassen) mit DetailOf-Namen und zugehöriger Nummer 
02.
Const Liste = "E:\Test\Namespace-Liste.txt"     
03.
 
04.
Dim objFolder, strName, strText, i 
05.
     
06.
Set objFolder = CreateObject("Shell.Application").Namespace("C:\") 
07.
     
08.
For Each strName In objFolder.Items 
09.
    For i = 0 To 300 
10.
        strText = strText & Right("00" & i, 3) & " - " & objFolder.GetDetailsOf(Null, i) & vbNewLine 
11.
    Next 
12.
    Exit For 
13.
Next 
14.
 
15.
CreateObject("Scripting.FileSystemObject").CreateTextFile(Liste).Write strText
Aus dieser Liste kannst Du die Detailnamen aussuchen, die für Dich wichtig sind...

Zum Auslesen wäre es interessant zu wissen, ob Du nur einzelne Dateien oder z.B. alle *.exe-Dateien in einem Ordner auslesen willst. Außerdem, ob Du die Ausgabe Zeilenweise oder im Csv-Format haben möchtest?

Grüße Dieter
Bitte warten ..
Mitglied: colinardo
25.06.2014, aktualisiert um 14:14 Uhr
Hallo Enviben,
die Anführungszeichen hatte ich vergessen, sorry dafür.
Der Aufruf in einer Batch ist auch kein Problem, dazu schreibst du dir folgende Batch:
01.
@echo off 
02.
powershell.exe ".'E:\Pfad zum Script\show_fileattributes.ps1' '%~1'" 
03.
pause
Dann kannst du der Batchdatei über den ersten Parameter den Pfad des Files mit übergeben, oder dein File via Sendas oder Drag n' Drop drauf werfen. Mit diesem abgeänderten Script zeigt es dann nur deine gewünschten Eigenschaften direkt in der Konsole an:
01.
param( 
02.
    [parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$file 
03.
04.
 
05.
function Add-ExtendedFileProperties{ 
06.
 <# 
07.
     .SYNOPSIS 
08.
        Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu 
09.
     .DESCRIPTION 
10.
        Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails 
11.
     .EXAMPLE  
12.
            Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" | ft Name,Bildhöhe,Bildbreite,Bitrate 
13.
            Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Bitrate" als zusätzliche Spalten dem Objekt in der Pipline hinzu 
14.
     .EXAMPLE 
15.
            Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl * 
16.
            Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu 
17.
     .PARAMETER PropertyExtended 
18.
        Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten. 
19.
            -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" 
20.
#> 
21.
    param( 
22.
        [Parameter(Mandatory=$true,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
23.
        $fileItem, 
24.
        [String[]] $PropertyExtended = "ALL" 
25.
26.
    begin 
27.
28.
        $shellObject = New-Object -Com Shell.Application 
29.
        $itemProperties = $null 
30.
31.
 
32.
    process 
33.
34.
        if($fileItem.PsIsContainer) 
35.
36.
            $fileItem 
37.
            return 
38.
39.
        $directoryName = $fileItem.DirectoryName 
40.
        $filename = $fileItem.Name 
41.
 
42.
        $folderObject = $shellObject.NameSpace($directoryName) 
43.
        $item = $folderObject.ParseName($filename) 
44.
 
45.
        if(-not $itemProperties) 
46.
47.
            $itemProperties = @{} 
48.
            $counter = 0 
49.
            $columnName = "" 
50.
            if ($PropertyExtended -eq "ALL"){ 
51.
                 #get all properties 
52.
                do { 
53.
                    $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) 
54.
                    if($columnName) { $itemProperties[$counter] = $columnName } 
55.
                    $counter++ 
56.
                }while($columnName) 
57.
            }else{ 
58.
                #get user defined properties 
59.
                do { 
60.
                    $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) 
61.
                    foreach($name in $PropertyExtended){ 
62.
                        if ($columnName.toLower() -eq $name.toLower()){ 
63.
                            $itemProperties[$counter] = $columnName 
64.
65.
66.
                    $counter++ 
67.
                }while($columnName) 
68.
69.
70.
 
71.
        foreach($itemProperty in $itemProperties.Keys) 
72.
73.
            $fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] ` 
74.
                $folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction ` 
75.
                SilentlyContinue 
76.
77.
        $fileItem 
78.
79.
80.
if ((Test-Path $file)){ 
81.
    dir $file | Add-ExtendedFileProperties -PropertyExtended Dateiversion,Produktversion | fl Dateiversion,Produktversion 
82.
}else{ 
83.
    write-host "Die Datei konnte nicht gefunden werden" -ForegroundColor Red 
84.
}
Grüße Uwe
Bitte warten ..
Mitglied: evinben
25.06.2014 um 13:06 Uhr
Hallo Dieter,

Zum Auslesen wäre es interessant zu wissen, ob Du nur einzelne Dateien oder z.B. alle *.exe-Dateien in einem Ordner auslesen willst.
ne, ne, so wie ich ganz am Anfang an geschrieben habe:
Und im Gegensatz zu dem obigen Skript einen ganzen Ordner zu durchsuchen, plane ich nur die ausgewählten Dateien als Argument zu verarbeiten (indem ich sie einfach auf eine Batch-Datei oder vbs-Skript ziehe und loslasse, bzw. über sendto an das Skript sende)...
Eine zeilenweise Ausgabe ist völlig ausreichend.
Es geht hier lediglich darum bei einem Vergleich anstatt die langen Nummer manuell abzutippen (und dabei eventuelle Fehler zu machen) diese schnell zu kopieren.

Gruß
evinben
Bitte warten ..
Mitglied: evinben
25.06.2014, aktualisiert um 13:53 Uhr
Hallo Uwe,

die Anführungszeichen hatte ich vergessen, sorry dafür.
heißt es du hast den Code zuletzt so angepasst, dass Eingabe des Pfades auch in Anführungszeichen möglich wäre? Weil ich die folgende Ausgabe erhalte:
01.
PS D:\Datei-Eigenschaften auslesen> D:\Datei-Eigenschaften auslesen\GetFileproperties.ps1 
02.
Die Datei konnte nicht gefunden werden
und ohne die Anführungszeichen dann wie erwartet:
01.
PS D:\Datei-Eigenschaften auslesen> D:\Datei-Eigenschaften auslesen\GetFileproperties.ps1 
02.
 
03.
 
04.
Dateiversion   : 1.0.1.131 
05.
Produktversion : 1, 0, 1, 131
Und mit dem folgenden Syntax in einer Batch
powershell.exe "C:\VollständigerPfadzumScript.ps1" "%1"
bekomme ich die folgende Ausgabe beim Ausführung per Drag&Drop:
01.
Die Benennung "D:\Datei-Eigenschaften" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. 
02.
Bei Zeile:1 Zeichen:23 
03.
+ D:\Datei-Eigenschaften <<<<  auslesen\GetFileproperties.ps1 D:\Datei-Eigenschaften auslesen\TextFile.exe 
04.
    + CategoryInfo          : ObjectNotFound: (D:\Datei-Eigenschaften:String) [], CommandNotFoundException 
05.
    + FullyQualifiedErrorId : CommandNotFoundException
Das von dir angegebene Argument am Ende des Aufrufs soll zwar 1% (bzw. "%~1") lauten, aber das Hauptproblem liegt irgendwo anders...
Also obwohl der Pfad in Anführungszeichen gesetzt worden ist, werden die Leerzeichen von PowerShell weiterhin als Trennzeichen behandelt.

Gruß
evinben
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.06.2014, aktualisiert um 16:34 Uhr
Ach, meine Güte wo ist mein Kopf heute - sorry - es muss natürlich so aussehen:
01.
@echo off 
02.
powershell.exe ".'D:\Datei-Eigenschaften auslesen\GetFileproperties.ps1' '%~1'" 
03.
pause
(bitte den Punkt vor dem Pfad nicht entfernen, der muss da stehen)
Grüße Uwe

(habe es oben auch korrigiert)
Bitte warten ..
Mitglied: evinben
25.06.2014 um 17:03 Uhr
sauber , es funktioniert nun!
Mir reicht es momentan so wie es ist aus. Es wäre einfacher nur reine ps1-Datei zu haben und an diese die Parameter über die Batch-Datei zu übergeben. Solltest du auf Anhieb wissen wie ein Argument im PowerShell-Skript empfangen werden kann, dann werde ich es bei Gelegenheit versuchen. Aber jetzt Schluss damit.

Gruß
evinben
Bitte warten ..
Mitglied: colinardo
25.06.2014, aktualisiert um 17:23 Uhr
du kannst dir einfach eine neue Verknüpfung anlegen und dies dort reinschreiben:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nologo -noexit -File "D:\Datei-Eigenschaften auslesen\GetFileproperties.ps1"
dann kannst du auf diese Verknüpfung dein File werfen, und benötigst keine Zwischenbatch mehr.
Bitte warten ..
Mitglied: evinben
25.06.2014 um 18:12 Uhr
dann besteht aber das Problem mit der Pfadbeziehung. In einer Batch habe ich mit %~dp0
01.
PushD %~dp0 
02.
powershell.exe ".'%~dp0GetFileProperties.ps1'" '%~1'"
immer die Verbindung zu dem externem Skript, auch wenn sich der Pfade ändert.
Bzw. es könnte eventuell auch möglich sein die absolute oder auch die relative Pfadbeziehung in einer Verknüpfung zu erzwingen - aber dies wäre mir neues.
Dennoch gut zu wissen mit der Verknüpfung und daher habe ich mir es gleich als zusätzliche Möglichkeit aufgenommen.
Ich hab mir eine Verknüpfung in SendTo zu der Batch-Datei angelegt und so läuft es mit meiner Erfahrung auf Dauer ohne Überraschungen robust, da egal wo sich die beiden Dateien dann letztendlich befinden, geht die Beziehung dank der wunderbaren Verknüpfungslog in Windows (man muss doch mal Windows und Microsoft loben) nicht verloren.

Gruß
evinben
Bitte warten ..
Mitglied: colinardo
25.06.2014, aktualisiert um 18:37 Uhr
Zitat von evinben:
dann besteht aber das Problem mit der Pfadbeziehung. In einer Batch habe ich mit %~dp0
etwas ähnliches lässt sich auch mit der Verknüpfung erreichen:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nologo -noexit -File ".\GetFileproperties.ps1"
Dann wird das Script immer im Pfad gesucht der in der Verknüpfung unter Ausführen in: steht.
Bitte warten ..
Mitglied: evinben
25.06.2014, aktualisiert um 21:19 Uhr
jetzt verstehe ich, warum es bei mir bisher nie mit einer relativen Pfadeingabe in der Verknüpfung geklappt hat (mit ".\" bzw. "..\")! Weil mir nicht bewusst war, dass der Pfad in Ausführen in: Pflicht ist (dies habe ich nämlich bei Tests leider immer leer gelassen gehabt). Nun habe ich wieder was nützliches nebenbei gelernt. Aber hier nicht vergessen beschränkt sich der Vorteil der Beziehung lediglich nur bei Pfadänderungen innerhalb des Stammverzeichnisses.
In diesem Zusammenhang jedoch bleibt etwa wie %~dp0 auf Dauer deutlich robustere Variante (in einer Verknüpfung dagegen muss der Pfad bei einer Änderung des Stammverzeichnis jeweils zwangsweise angepasst werden).
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...