130834
Goto Top

( Batch ) Open File or Folder Dialog

Hallo Programmierer und ähnliches da draußen

Also ich hab neulich nach dem hier gesucht
( Bild ) da ihr alle wisst, das Benutzer nicht für Genauigkeit bekannt sind, und ... ja wie auch immer. Es gibt ja die normalen File select Dialoge und die hässlichen Folder select Dialoge. Es gibt merges die beides akzeptieren, und genau sowas suche ich, und wenn das nicht schon genug wäre, auch noch in einer Batch

Notiz; ich möchte die Batch nicht kompilieren, also bitte keine Zusatz Tools, sondern eher Stock Windows.

Danke, habt nen schönen Tag
lg clragon

PS: keine angst, ich werde bald auf C# umsteigen, dann hören die unmöglichen Batch - Probleme auf.
screenshot_2016-09-15-13-31-32

Content-Key: 315337

Url: https://administrator.de/contentid/315337

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: colinardo
colinardo 15.09.2016 aktualisiert um 14:01:02 Uhr
Goto Top
Hallo clragon,
Bidde:
back-to-topFileOpenDialog
powershell -Executionpolicy ByPass -Command "[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');$dlg = New-Object System.Windows.Forms.OpenFileDialog; if($dlg.ShowDialog() -eq 'OK'){return $dlg.FileNames}"  

back-to-topFolderBrowserDialog
powershell -Executionpolicy ByPass -Command "[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');$dlg = New-Object System.Windows.Forms.FolderBrowserDialog; if($dlg.ShowDialog() -eq 'OK'){return $dlg.SelectedPath}"  
oder alternativ auch per Shell.Application COM-Object
powershell -Executionpolicy ByPass -Command "(New-Object -Com Shell.Application).BrowseForFolder(0,'Bitte Ordner wählen',0,$null).Self.Path"  
back-to-topSaveFileDialog
powershell -Executionpolicy ByPass -Command "[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');$dlg = New-Object System.Windows.Forms.SaveFileDialog; if($dlg.ShowDialog() -eq 'OK'){return $dlg.Filename}"  

Die Befehle geben jeweils den/die ausgewählten Pfad(e) aus sofern nicht auf Abbrechen geklickt wird.

Willst du das Ergebnis in einer Variablen, pack die Befehle einfach in eine FOR-Schleife.

Die Dialogeigenschaften kann man mit dem Setzen von Eigenschaften festlegen. Z.B. den initialen Ordner ob mehrere Dateien ausgewählt werden können oder den Filter, etc, alles möglich.

Die Referenz zu den NET Objekten der FileSystemDialoge findest du im MSDN.
https://msdn.microsoft.com/de-de/library/system.windows.forms.openfiledi ...

Grüße Uwe
Mitglied: 130834
130834 15.09.2016 um 16:53:58 Uhr
Goto Top
Vielen Dank, das sieht doch schon mal gut aus, ich werds gleich Testen :D
Mitglied: 130834
130834 15.09.2016 um 17:08:49 Uhr
Goto Top
Also hab's getestet. Mal abgesehen davon das es recht langsam ist, was irgendwie bei powershell-snippets öfter vorzukommen scheint, ist mein Problem das ich gerne auch Ordner in dem File select Dialog auswählen möchte, und das zusammen mit den Dateien, da ich eine batch habe die beides verarbeitet. Hört sich aber recht unmöglich an, da es die Funktion so etwas zu tun wohl nicht standardmäßig in Windows gibt...
Mitglied: colinardo
Lösung colinardo 15.09.2016 aktualisiert um 17:33:37 Uhr
Goto Top
Zitat von @130834:

Also hab's getestet. Mal abgesehen davon das es recht langsam ist, was irgendwie bei powershell-snippets öfter vorzukommen scheint
Nur wenn man damit in der langsam aber sicher hoffnungslos veralteten cmd rumfuchtelt face-wink. 1 Sekunde ist dir zu langsam? wie gesagt das sind alles Kompromisse die man eingehen muss wenn man sich keine eigene App dafür kompiliert.
, ist mein Problem das ich gerne auch Ordner in dem File select Dialog auswählen möchte, und das zusammen mit den Dateien, da ich eine batch habe die beides verarbeitet.
Hört sich aber recht unmöglich an, da es die Funktion so etwas zu tun wohl nicht standardmäßig in Windows gibt...
Mit Powershell kannst du dir deine eigenen Dialoge nach Gusto bauen, dir steht das ganze .NET Framework zur Verfügung inkl. Windows Forms und WPF ... alles ist möglich face-wink Beispiele dazu findest du von mir hier im Forum massenhaft.

Besser du baust dir gleich eine native App. Batch ist und bleibt einfach nichts für grafische Oberflächen, du kannst hier nur Kompromisse eingehen.

Als weitere Alternative, EXE mit AutoIT kompilieren und beipacken.

Viel mehr Möglichkeiten hast du mit Bordmitteln nicht, außer auf Dialoge von COM-Objekten via VBS zuzugreifen, aber diese kannst du auch nicht großartig anpassen.
Mitglied: 130834
130834 15.09.2016 um 17:39:23 Uhr
Goto Top
Nein, nicht 1 Sekunde, 6 Sekunden.

Aber okey dann geb ich das eben auf...
Man kann schließlich nicht alles haben.
Trotzdem danke für die Hilfe.