Ashura: Windows-Konsole saugt, Bash regelt

Hallo.

Ich stand eben vor dem Problem, unzählige Icon-Grafiken in ihre Bestandteile zu zerlegen und als PNG abzuspeichern, damit die Alphatransparenz nicht verloren geht.

Da ich ImageMagick schon seit Ewigkeiten installiert habe, war dies das Mittel der Wahl. Einziges Problem: die verstümmelten Scripting-Fähigkeiten der Windows-Konsole.
Die Dateien einzeln konvertieren wollte ich nicht, also musste eine Schleife her.

Versuch Windows:

for %i in (*.*) do convert %i %i.png

Resultat Windows:
  „foo.ico“ wird zu „foo.ico.png“, kleinste Auflösung

Nach einigem Experimentieren hatte ich die Nase voll und startete die Bash.

Versuch Bash:

for file in ls; do convert $file ${file/.ico/.png}; done
                                     ^^^^^^^^^^^^^^^^^
                                     Ist dies in der Windows-Konsole möglich?

Resultat Bash:
  „foo.ico“ wird zu „foo-X.png“, wobei „X“ für eine aufsteigende Nummer pro Icon steht, damit alle Auflösungen vorhanden

Wollte ich nur einmal loswerden, vielleicht tritt sogar der Fall ein, dass es irgendjemandem einmal weiterhilft.

Einen schönen Mittwoch noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
mathbr:del.icio.us/ mathbr:w00t/
  1. Hallo.

    for file in ls; do convert $file ${file/.ico/.png}; done

    Hatte ich fast vergessen:

    Die normale convert.exe in Windows-Systemen dient der Konvertierung von Dateisystemen. Da ich diese so gut wie nie brauche, habe ich sie umbenannt, womit kein Konflikt mehr zur convert.exe von ImageMagick bestand.

    Wenn man dies nicht tun will, muss man in obiger Schleife natürlich den absoluten Pfad zu ImageMagicks convert.exe anstelle von convert verwenden.

    Einen schönen Mittwoch noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/
  2. Hallo Ashura,

    Da ich ImageMagick schon seit Ewigkeiten installiert habe, war dies das Mittel der Wahl. Einziges Problem: die verstümmelten Scripting-Fähigkeiten der Windows-Konsole.

    soo schlimm sind die auch nicht. Du kennst sie nur nicht. Schade.

    Die Dateien einzeln konvertieren wollte ich nicht, also musste eine Schleife her.

    Versuch Windows:

    for %i in (*.*) do convert %i %i.png

    convert hast Du ja in Deinem Nachfolgeposting erklärt, ein vollständiger Pfad wäre auch nicht verkehrt gewesen.

    Eine kleine Archivsuche mit

    author:Vinzenz for batch

    hätte Dir unter anderem dieses Archivposting von mir geliefert.

    und

    for %I in (*.*) DO convert %I %~nI.png

    hätte Dir das gewünschte geliefert.

    Wollte ich nur einmal loswerden, vielleicht tritt sogar der Fall ein, dass es irgendjemandem einmal weiterhilft.

    help for

    hilft in solchen Fällen weiter :-)

    Freundliche Grüße

    Vinzenz

    1. Hallo Ingrid,

      eine Themenänderung wäre doch angebracht.

      for %I in (*.*) DO convert %I %~nI.png
        help for
      hilft in solchen Fällen weiter :-)

      Freundliche Grüße

      Vinzenz

      1. Hi,

        Hallo Ingrid,

        Ingrid?

        Schönen Sonntag noch!
        O'Brien

        --
        Frank und Buster: "Heya, wir sind hier um zu helfen!"
        1. Hallo O'Brien,

          Hallo Ingrid,
          Ingrid?

          Ingrid!

          Grüße aus Nürnberg
          Tobias

        2. Hallo O'Brien

          Ingrid?

          Ingrid, die ~ machen

          Auf Wiederlesen
          Detlef

          --
          - Wissen ist gut
          - Können ist besser
          - aber das Beste und Interessanteste ist der Weg dahin!
          1. Hallo,

            Ingrid, die ~ machen

            Wie spricht man das aus? Ingrid, die Tilde machen? Wenn ja, was soll damit gemeint sein? Wofür steht die Tilde? Für /home/foo?

            Gruß,
            Severin

            --
            They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
            -- Benjamin Franklin
            1. gudn tach Severin!

              Ingrid, die ~ machen

              Wie spricht man das aus? Ingrid, die Tilde machen? Wenn ja, was soll damit gemeint sein? Wofür steht die Tilde? Für /home/foo?

              roflol! gemeint ist die bedeutung der tilde in woerterbuechern.

              aber "Ingrid, die /home/foo machen" finde ich auch gut... eigentlich sogar noch besser.

              prost
              seth

        3. Hi Ingrid,

          danke Tobias und Detlef! Man lernt doch täglich was dazu :)

          Schönen Sonntag noch!
          O'Brien

          --
          Frank und Buster: "Heya, wir sind hier um zu helfen!"
    2. Hallo Vinzenz.

      Einziges Problem: die verstümmelten Scripting-Fähigkeiten der Windows-Konsole.

      soo schlimm sind die auch nicht. Du kennst sie nur nicht. Schade.

      Richtig, ich bin aber gerne bereit, diesen Missstand auszubessern.

      convert hast Du ja in Deinem Nachfolgeposting erklärt, ein vollständiger Pfad wäre auch nicht verkehrt gewesen.

      Zur convert.exe von ImageMagick? Diese liegt stets im Programmverzeichnis des selbigen.

      Oder zur convert.exe von Windows? Diese liegt im %windir%\system32 Verzeichnis.

      Eine kleine Archivsuche mit

      author:Vinzenz for batch

      hätte Dir unter anderem dieses Archivposting von mir geliefert.

      Und wie wäre ich auf „author:Vinzenz for batch“ gekommen?

      und

      for %I in (*.*) DO convert %I %~nI.png

      hätte Dir das gewünschte geliefert.

      Werde ich bei Gelegenheit näher studieren, danke.

      help for

      hilft in solchen Fällen weiter :-)

      Habe ich aufgerufen, aber ehrlich gesagt verstehe ich von dem Kauderwelsch darin kaum ein Wort. Echte manpages sind mir lieber.

      Einen schönen Donnerstag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      mathbr:del.icio.us/ mathbr:w00t/
      1. gudn tach!

        convert hast Du ja in Deinem Nachfolgeposting erklärt, ein vollständiger Pfad wäre auch nicht verkehrt gewesen.

        Zur convert.exe von ImageMagick? Diese liegt stets im Programmverzeichnis des selbigen.

        Oder zur convert.exe von Windows? Diese liegt im %windir%\system32 Verzeichnis.

        ich denke, Vinzenz meinte, dass statt der umbenennung der windowseigenen datei convert.exe es auch moeglich gewesen waere, den vollstaendigen pfad bei der ausfuehrung des befehls anzugeben
        for ... do C:\Programme\ImageMagick\convert.exe ...
        oder so

        Eine kleine Archivsuche mit

        author:Vinzenz for batch

        hätte Dir unter anderem dieses Archivposting von mir geliefert.

        Und wie wäre ich auf „author:Vinzenz for batch“ gekommen?

        da du ja auch sehr oft hier bist, ging der Vinzenz davon aus (und das waere ich auch), dass du mitbekommen haettest, dass er doch u.a. von windows-kram wie batch, vb[as]{0,1} und so'm kram recht viel ahnung hat und auch sehr oft postings beantwortet, die fragen zu sowas enthalten.

        help for

        hilft in solchen Fällen weiter :-)

        Habe ich aufgerufen, aber ehrlich gesagt verstehe ich von dem Kauderwelsch darin kaum ein Wort. Echte manpages sind mir lieber.

        hmm, naja, so ein bissl manpage-feeling geht ja:

        help for | less

        ;-) problem sind hier nur mal wieder die umlaute und das sz...

        prost
        seth

        1. Hallo seth.

          ich denke, Vinzenz meinte, dass statt der umbenennung der windowseigenen datei convert.exe es auch moeglich gewesen waere, den vollstaendigen pfad bei der ausfuehrung des befehls anzugeben

          Hatte ich erwähnt:

          Wenn man dies nicht tun will, muss man in obiger Schleife natürlich den absoluten Pfad zu ImageMagicks convert.exe anstelle von convert verwenden.

          for ... do C:\Programme\ImageMagick\convert.exe ...
          oder so

          Tja, bei mir heißt der Pfad P:\ImageMagick-6.2.4-Q16\convert.exe

          (Gut, %programfiles% gibt es, aber da das Programmverzeichnis auch jeden beliebigen Namen haben kann und man ImageMagick wohl kaum zufällig installiert, meine ich, dass man wissen sollte, wo seine convert.exe von ImageMagick liegt.)

          da du ja auch sehr oft hier bist, ging der Vinzenz davon aus (und das waere ich auch), dass du mitbekommen haettest, dass er doch u.a. von windows-kram wie batch, vb[as]{0,1} und so'm kram recht viel ahnung hat und auch sehr oft postings beantwortet, die fragen zu sowas enthalten.

          Bei meiner Suche bin ich ehrlich gesagt nicht darauf gekommen.

          Einen schönen Donnerstag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/
      2. Hallo Ashura,

        Einziges Problem: die verstümmelten Scripting-Fähigkeiten der Windows-Konsole.
        soo schlimm sind die auch nicht. Du kennst sie nur nicht. Schade.
        Richtig, ich bin aber gerne bereit, diesen Missstand auszubessern.

        hehe, das ist die richtige Einstellung.

        convert hast Du ja in Deinem Nachfolgeposting erklärt, ein vollständiger Pfad wäre auch nicht verkehrt gewesen.
        Zur convert.exe von ImageMagick? Diese liegt stets im Programmverzeichnis des selbigen.

        ja, siehe seths Posting

        Eine kleine Archivsuche mit
           author:Vinzenz for batch
        hätte Dir unter anderem dieses Archivposting von mir geliefert.
        Und wie wäre ich auf „author:Vinzenz for batch“ gekommen?

        Ja, da hatte ich einen unfairen Vorteil Dir gegenüber. Ich wusste, dass ich in den letzten Wochen etwas genau zu Deiner Problematik gepostet hatte :-)

        for %I in (*.*) DO convert %I %~nI.png

        Zur Suchstrategie: Ausgehend von Deinem Problem wäre doch eine Suche mit

        for cmd

        oder

        for cmd batch

        naheliegend gewesen: Es geht Dir um die for-Anweisung der Windows-Shell CMD, batch habe ich hinzugefügt, weil solche Probleme öfters in Batchdateien auftreten können. Einzeiler in CMD sind doch eher seltener.
        Bereits die Suche mit "for cmd" liefert Dir mein Archivposting als erstes auf dem Silberteller.

        Ketzerische Frage: Mit welchen Begriffen hast Du gesucht? *fg*

        help for
        hilft in solchen Fällen weiter :-)

        Habe ich aufgerufen, aber ehrlich gesagt verstehe ich von dem Kauderwelsch darin kaum ein Wort.

        Ashura, bist Du Dir sicher, dass diese Einstellung angebracht ist? Im Hinblick auf folgenden Ausschnitt.

        <q cite="help for">
        Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
        Sie können jetzt folgende Syntax verwenden:

        %~I         - Expandiert %I und entfernt alle umschließenden
                          Anführungszeichen (").
            %~fI        - Expandiert %I zu einem vollständigen Dateinamen.
            %~dI        - Erzeugt nur den Laufwerkbuchstaben von %I.
            %~pI        - Erzeugt nur den Pfad von %I.
            %~nI        - Erzeugt nur den Dateinamen von %I.
            %~xI        - Erzeugt nur die Dateierweiterung von %I.
        </q>

        Hast Du noch nie gefragt, ob jemand etwas im Handbuch oder in SELFHTML nachgelesen hat? Gehst Du nicht auch manchmal etwas streng mit Hilfesuchenden um, die auf solche Vorschläge nicht eingehen? Oder etwas in SELFHTML nicht verstehen?

        Echte manpages sind mir lieber.

        Nimmst _Du_ eine solche Aussage einem Hilfesuchenden ab? Wirst Du solche Sätze nicht auch als billige Ausrede werten?

        Ja, ich weiß: eine Reihe meiner eigenen Postings im Archiv sind sehr zu beanstanden. Nein, damit bin ich nicht glücklich.

        Freundliche Grüße

        Vinzenz

        PS: Manchmal ist es ziemlich schwer, die Aussage zu kritisieren - und nicht den Poster. Ich habe es versucht.

        1. Hallo Vinzenz.

          Bereits die Suche mit "for cmd" liefert Dir mein Archivposting als erstes auf dem Silberteller.

          Keine Ahnung, ob dies meinem Gehirn zu naheliegend war, aber jedenfalls bin ich nicht auf diese Kleinigkeit gekommen.

          Ketzerische Frage: Mit welchen Begriffen hast Du gesucht? *fg*

          „for author:"Ingo Turski"“ weil ich in Erinnerung hatte, dass dieser einmal eine brauchbare for-Schleife gepostet hatte. (An Stelle von „for“ natürlich auch Kombinationen mit „in“, „do“, aber wie gesagt nicht mit „cmd“ …)

          Habe ich aufgerufen, aber ehrlich gesagt verstehe ich von dem Kauderwelsch darin kaum ein Wort.

          Ashura, bist Du Dir sicher, dass diese Einstellung angebracht ist? Im Hinblick auf folgenden Ausschnitt.

          Muss ich (ernsthaft) überlesen haben.

          Hast Du noch nie gefragt, ob jemand etwas im Handbuch oder in SELFHTML nachgelesen hat?

          Doch, natürlich. Aber nur, wenn ich den Eindruck bekomme, dass der Fragende sich keinerlei Mühe gegeben hat. Andernfalls verlinke ich einfach das potentiell hilfreiche Kapitel.

          Gehst Du nicht auch manchmal etwas streng mit Hilfesuchenden um, die auf solche Vorschläge nicht eingehen? Oder etwas in SELFHTML nicht verstehen?

          Was ist an einer Rückfrage ob der Unverständlichkeit des jeweiligen Kapitels streng?

          Echte manpages sind mir lieber.

          Nimmst _Du_ eine solche Aussage einem Hilfesuchenden ab? Wirst Du solche Sätze nicht auch als billige Ausrede werten?

          Keine Ahnung, bisher ist mir noch niemand mit obiger Aussage begegnet.

          Ja, ich weiß: eine Reihe meiner eigenen Postings im Archiv sind sehr zu beanstanden. Nein, damit bin ich nicht glücklich.

          Ich schon. Dadurch kann ich verfolgen, wie ich mich (hoffentlich weiter-)entwickelt habe.

          PS: Manchmal ist es ziemlich schwer, die Aussage zu kritisieren - und nicht den Poster. Ich habe es versucht.

          Es ist dir gelungen.

          Einen schönen Donnerstag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/