Bild anzeigen mittels Batch

Hallo Freunde,
ich möchte Bilddateien eines Ordners mit Hilfe eines MS-DOS-Programms anzeigen. Früher konnte ich so etwas; aber meine alten Batches funktionieren nicht mehr alle.
Das Auffinden einer Bilddatei nach meinen Kriterien mit DIR-Befehl gelingt; aber wie bringe ich es zur Anzeige?
Gruß!
Friedrich

Da Du vermutlich die DOS-Eingabeaufforderung unter Windows nutzt, musst Du dort einen geeigneten Bildbetrachter installieren, den Du dann mit dem Pfad und dem Namen des Bildes als Parameter aufrufst.

Stellt sich nur die Frage, warum man sich das Spiel heute noch mit Batch-Dateien antut? Die üblichen Bildbetrachter unterstützen Dia-Shows auf Basis von beim Start übergebener Verzeichnisse oder einer entsprechenden Liste mit einzelnen Bildern.

1 Like

Kannte noch zu Viru… ääh Win95MSDos Zeiten das Kürzel " .graf" .
Weiss aber nicht mehr, ob das eine Programmier - Spielerei meinerseits war …

Vielleicht findet sich ja was unter Befehl " .dir "

Gruss

hi,

also unter W10 reicht es, einfach den Dateiname aufzurufen, damit er den win-eigenen Bildbetrachter öffnet.

grüße
lipi

1 Like

Das weiß ich, und wenn ich das @echo off am Anfang wegnehme, sehe ich das Ergebnis des dir-Befehls und Name incl. Pfad der gesuchten Bilddatei. Leider wird das Bild nicht angezeigt, das gelingt nur, wenn ich das dir-Ergebnis manuell eintippe. Auch als Parameter für GIMP funkt. es nicht.
Ich vermute, daß ich das Bild anzeigen kann, wenn ich den Dateinamen in eine Variable speichere; leider weiß ich nicht, wie man das macht.
Übrigens will ich keinen Bildbetrachter benutzen, weil ich ihn nicht mit der Bildersuche kombinieren kann. Die einfachste adhoc-Lösung ist das Verlinken auf den Desktop, da muß ich nur 1x draufklicken; aber keine Suche.

… das siehst Du auch mit @echo off. Das schaltet nur die Anzeige der eigentlichen Befehlseingabe aus.

So ganz erschließt sich mir aber noch nicht was Du da konkret erreichen willst. Wie soll sich des das Ergebnis aus DIR auf den Dateinamen auswirken?

Wie schon @littlepinguin schrieb, kannst Du den Dateinamen ein „solo“ angeben, als wäre es eine Programmdatei. Dann passiert das gleich, wie im Explorer bei einem Doppelklick.

hi,

Es ist schwer zu verstehen, was deine Batch macht, wenn man nix sieht.
Wenn du weißt, wie man die Datei öffnen könnte, besteht deine Batch dann nur aus dir *.jpg ?
Mir fehlt gerad der Ansatz, wenn es früher ging, und jetzt nicht, wo das Problem sein könnte. Aber das einfache auflisten der Dateinamen durch DIR hat doch noch nie was gestartet?!

Beispielhaft könnte es so aussehen:
for /f %i in ('dir /b /s "suchmich*.jpg"') do start %i

in einer Datei glaub ich %%i. Batch ist nicht so meins.

grüße
lipi

So langsam wird Licht: Du erwartest offenbar, dass Du einen DIR-Befehl absenden kannst, der genau ein Bild (was machst Du bei mehreren Funden?) als Ergebnis liefert, das Du dann unmittelbar angezeigt bekommen möchtest. Richtig verstanden? Das ist nicht so einfach möglich und der DIR-Befehl ist auch tatsächlich nur für die Anzeige einer Verzeichnis- und Dateistruktur gedacht.

So aus dem Kopf heraus habe ich dafür auch keine Lösung mehr. Habe schon lange keine komplizierteren Batches mehr geschrieben. Das hat man üblicherweise mit einer FOR-Schleife gemacht, um jede vom DIR gefundene Datei dann einer entsprechenden Behandlung zu unterziehen.

So, ich denke, ich habe eine passende Zeile für eine entsprechende Batch-Datei:

for /f "delims=" %%a in ('dir /b /a-d /s %1') do "C:\Program Files\IrfanView\i_view64.exe" %%a

Wichtig sind hier folgende Dinge:

  1. mit dem „delims“ wird sichergestellt, dass auch Dateinamen mit Leerzeichen komplett verarbeitet werden und nicht am ersten Leerzeichen abbrechen, was dann in der weiteren Verarbeitung zu Fehlern führt. Kann es sein, dass es genau dieser Punkt ist, der früher unter einem reinen DOS-System ohne Leerzeichen in Dateinamen noch funktionierte?
  2. Bei Variablen, die innerhalb einer Batch-Datei deklariert werden, ist %% zur Kennzeichnung notwendig. D.h. der Name jeder einzelnen gefundenen Datei steht in %%a, während die beim Aufruf der Batch von der Kommandozeile übergebene Suchmaske in %1 steht
  3. Ich rufe hier konkret Irvanview als Bildbetrachter aus dem Pfad auf, in dem es bei mir installiert ist. @littlepinguin hatte statt dessen „start“ mit der Variablen, in der der Dateiname steckt, vorgeschlagen. Damit würde dann das vom System als für den jeweiligen Dateityp konfigurierte Programm aufgerufen. Ich bekomme damit allerdings das Problem, dass „start“ dann wieder den Dateinamen nur bis zum 1. Leerzeichen auswertet (trotz „delims“), während es mit Aufruf eines konkreten Programms funktioniert.
1 Like

Ohne es jetzt getestet zu haben … eigentlich sollte es funktionieren, wenn Du die Variable in doppelte Hochkommata (") steckst, so wie Du es mit dem Aufruf von IrfanView auch gemacht hast.

Danke für den Hinweis, der hilft bzgl. der Leerzeichen im Dateinamen. Es braucht aber noch zwei weitere " vorab, da als 1. Parameter bei „start“ der Titel des Fensters gesetzt werden muss.

Also z.B.

for /f "delims=" %%a in ('dir /b /a-d /s %1') do start "Test" "%%a"

D.h. „Test“ ist der Fenstertitel und jetzt funktioniert die Batchdatei aufgrund „start“ auch mit allen beliebigen Dateitypen unter Aufruf des hierfür jeweils konfigurierten Standardprogramms. D.h. wenn man nach „Test.*“ sucht, wird test.jpg z.B. mit Irvanview und test.mp4 mit VLC, … gestartet.

1 Like

Danke, jetzt habe ich Tipps ohne Ende; aber leider nicht ganz verstanden - bin >80 J. alt. Das dauert natürlich.
Ich habe zum Testen erstmal nur die „einfache“ Aufgabe „Bilddatei suchen und auf unterschiedl. Weise darstellen“ geübt. Da meine richtige Suche auch Dateinamen mit Steuerzeichen &&& umfaßt, hatte ich damit noch keinen Erfolg. Da braucht man sicher den Namen als Variable.
Wenn ich den Dateinamen vorher weiß, kann ich das Bild nur durch Eintippen des Namens darstellen, allerdings bei Steuerzeichen mit Anführungszeichen.

Einfach zu verstehende Antworten kannst Du nur erhalten, wenn Du die Problemstellung vollständig beschreibst. Andernfalls gibt es zu viele Interpretationsmöglichkeiten und es wird unübersichtlich durch zig Nachfragen und Lösungsvorschlägen, die halt nicht das ungenannten Gewünschte erfüllen.

Wenn Du den Dateinamen weißt und nur diese eine Datei öffen willst, ergibt eine Batch IMHO wenig Sinn, weil ein Einzeiler.

1 Like

Du speicherst meine oben genannte Zeile z.B. als „anzeige.bat“ vorzugsweise in einem Ordner auf dem PC ab, der in der Path-Variablen (kann in Eigenschaften/System/Info/Erweiterte Systemeinstellungen/Umgebungsvariablen angepasst werden) enthalten ist. Dann rufst Du über die Kommandozeile in einem Ordner oberhalb oder auf gleicher Ebene wie die gesuchte(n) Datei(en) anzeige zusammen mit deinem Suchmuster auf. Also z.B. anzeige Mast1.jpg oder auch anzeige Mast*.jpg oder anzeige Mast*.* Verwendest Du ein Suchmuster in dem bereits Leerzeichen enthalten sind, dann muss das Suchmuster in " eingeschlossen werden. Also z.B. anzeige "Mast 1*.jpg

Ups, beim letzten Beispiel fehlt das" am Ende.

Ich habe viel ausprobiert, bis ich gemerkt habe, daß man 2 Batches benötigt. Deine 2.Vorlage vom 8.März funktioniert, wenn man sie richtig in einer anderen Batch aufruft. Ich wähle zuerst den Pfad der Bilddateien und rufe dann den Batch mit der for-Schleife mit dem Pfad auf.
Das funktioniert prinzipiell; aber bei mehreren Fundstellen werden die Bilder übereinander gelegt, sodaß man sie zur Sichtung auseinandernehmen muß. Kann man programmtechnisch etwas dagegen machen? Mich beschäftigt auch die Frage bei mehreren Fundstellen in verschiedenen Verzeichnissen.
Gruß!

Leider hast Du bis heute hier nicht das vollständige Szenario beschrieben, um das es Dir hier geht. Die von mir geschriebene Batch-Datei muss grundsätzlich nicht in einer anderen Batch aufgerufen werden, um zu funktionieren. Der Parameter „/s“ im Dir-Befehl sorgt automatisch dafür, dass das aktuelle Verzeichnis, aus dem heraus die Batch-Datei aufgerufen wird, und alle hierunter liegenden Verzeichnisse nach Dateien durchsucht werden, auf die das übergebene Suchmuster passt. Möchtest Du nur im aktuellen Verzeichnis suchen, müsstest Du das „/s“ entfernen. Willst Du immer aus einem bestimmten Ordner heraus die Suche starten, müsstest Du in die Batch-Datei vorab einem Befehl „cd [gewünschter Pfad]“ und ggf. noch einen Wechsel des zu durchsuchenden Laufwerks einfügen.

Wenn mehrere Dateien gefunden werden, wird natürlich für jede gefundene Datei eine Instanz des für den jeweiligen Dateityp hinterlegten Standardprogramms gestartet. Was möchtest Du denn statt dessen?

Wie schon geschrieben: Beschreibe bitte mal dein vollständiges Szenario!

1 Like

In meiner Anfrage vom 6.März habe ich geschrieben, was ich erreichen möchte: Bilder auf dem PC mit einem batch-file ansehen. Mit dem Datei-Explorer ist es auch möglich; aber umständlich. Ein batch-file kann ich mit dem Desktop verlinken und muß dann nur 1x draufklicken - ist total einfach.
Das habe ich jetzt, und die Vollansicht der Bilder kann ich wohl nicht vermeiden?!

Das ist aber offenbar nicht die ganze Geschichte, weil Du später etwas von „Steuerzeichen“ schreibst, und hier auch wieder schreibst:

Und das ist es eben nicht, wenn man nicht - hier bislang unbekannt gebliebene - besondere Anforderungen hat.

Der Normalfall ist doch der, dass man den Explorer aufruft, das gewünschte Verzeichnis anwählt und mit einem Doppelklick auf die gewünschte Datei das mit dem Dateityp verknüpfte Standardprogramm öffnet.

Kennt man den genauen Pfad nicht, tippt man den Dateinamen bzw. einen Namensbestandteil mit Wildcards in die Suchleiste im Explorer ein, bekommt dann eine Trefferliste ab dem Verzeichnis angezeigt, in dem man sich gerade befindet (nichts anderes als Dir /s) und macht dann einen Doppelklick auf eine der so gefundenen Dateien.

Was ist also der Unterschied zwischen dem Doppelklick auf die Batchdatei mit Angabe der Suchmaske und einem Doppelklick auf dem Explorer mit Angabe der Suchmaske in der Suchzeile, wenn Du sagst, dass letzteres umständlicher sei?

Was willst Du da vermeiden? Du willst doch ein/mehrere gefundene Bilder anzeigen. Nichts anderes macht die Batchdatei. Also beschreibe bitte konkret, was Du statt dessen möchtest.

2 Like

Kennt hier tatsächlich niemand das kostenlose Irfanview, bei dem man mit den Cursortasten einfach durch die Bilder eines Verzeichnisses blättern kann, wenn die Anzeige im WindowsExplorer (Extra große Symbole) nicht ausreicht?
Mit Batchdateien rumfummeln ist doch sowas von Opa…