bilalui
Goto Top

Mit Batch alle Dateien im Ordner zu Variable setzen und dann die enthaltenen Befehle mit einer FOR-Schleife ausführen xD

Hallo zusammen,

mal wieder habe ich ein großes Problem mit einer Batch. Die Batch um die es sich handelt hat den einzigen Auftrag, alle Dateien in einem Ordner zu einer Variable zu setzen und dann den Inhalt mit einer FOR-Schleife auszuführen. (Der Inhalt der Dateien sind Befehle in "BEFEHL Bla Bla") Das ausführen der Befehle ist kein Problem. Blos leider bekomme ich es nicht hin, dass die Batch ALLE DATEIEN IN DEM ORDNER abarbeitet (Es wird immer nur eine abgearbeitet).

Hier die momentanen Zeilen der Batch:

for %%f in ("DATA_COMP\plugins\core"\*.plg) do set plugin==%%f
for %%f in ("DATA_COMP\plugins\core"\%plugin%.plg) do "" %%f

Gibt es irgendwelche Möglichkeiten um das Problem zu lösen? Ich bin flexible und kann mit verschiedenen Lösungswegen immer etwas anfangen.
Hoffe ich habe mein Problem gut genug geschildert :D


LG und schönen Feierabend


Bilalui

Content-ID: 250050

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

bastla
bastla 24.09.2014 um 18:21:21 Uhr
Goto Top
Hallo bilalui!

Welchen Sinn soll denn die Variable %plugin% haben? Du kannst doch direkt %%f verwenden:
for %%f in ("DATA_COMP\plugins\core\*.plg") do "%%f"
Was die Anführungszeichen nach dem "do" sollten, kann ich mir übrigens auch nicht vorstellen ...

Grüße
bastla
bilalui
bilalui 24.09.2014 um 18:32:28 Uhr
Goto Top
Hallo bastla,

Da hast du Recht. Es würde auch in einer Zeile gehen. Die Anführungszeichen nach dem DO sind auch überflüssig wie ich gerade festgestellt habe. Allerdings löst das nicht das eigentliche Problem.


Bilalui
bastla
bastla 24.09.2014 um 18:36:14 Uhr
Goto Top
Hallo bilalui!

Worin bestand nochmal das Problem? face-wink

Grüße
bastla
bilalui
bilalui 24.09.2014 um 18:41:27 Uhr
Goto Top
Hallo Bastla,


Das Problem ist das die Zeile nur eine Datei in dem Ordner verarbeitet. Sie soll aber alle abarbeiten :D
bastla
bastla 24.09.2014 um 18:48:39 Uhr
Goto Top
Hallo bilalui!

Ich weiß ja nicht, womit Deine *.plg-Dateien ausgeführt werden - aber bei einem kurzen Test mit *.txt-Dateien wurden diese alle mit dem verknüpften Programm (Editor) geöffnet ...

Alternativ kannst Du noch
for %%f in ("DATA_COMP\plugins\core\*.plg") do start "" "%%f"
versuchen (ggf auch mit dem Parameter "/wait", falls nacheinander gestartet werden soll).

Wenn Du mehrere andere Batches starten wolltest, käme noch
for %%f in ("DATA_COMP\plugins\core\*.plg") do call "%%f"
in Frage ...

Grüße
bastla
bilalui
bilalui 24.09.2014 um 19:02:13 Uhr
Goto Top
Hallo Bastla,

die PLG-Dateien enthalten Batchbefehle in Anführungszeichen und die Batchzeile soll diese Lesen (was sie auch bei mir macht) und ausführen und dann sollte sie gleich die nächste Datei lesen und ausführen.
Die Zeilen die du hast, öffnen zwar alle Dateien im Editor aber nicht in der Batch


Bilalui
bastla
bastla 24.09.2014 um 22:02:32 Uhr
Goto Top
Hallo bilalui!
die PLG-Dateien enthalten Batchbefehle in Anführungszeichen
Und wozu das Ganze? Wäre es nicht einfacher, "richtige" Batches zu schreiben, passend zu benennen (als *.bat oder *.cmd - schlimmstenfalls auch als Kopie Deiner *.plg-Datei, wobei allerdings die Anführungszeichen stören dürften) und sie wie in meinem letzten Ansatz gezeigt auszuführen?

Wenn Du wirklich Zeile für Zeile auslesen und dann ausführen wolltest, müsste das eher so aussehen:
for %%f in ("DATA_COMP\plugins\core\*.plg") do for /f "delims=" %%a in (%%f) do %%~a
Grüße
bastla
rubberman
rubberman 24.09.2014 aktualisiert um 22:05:44 Uhr
Goto Top
Hallo Zusammen.

Oder auch
for /f "tokens=1* delims=:" %%i in ('findstr . "DATA_COMP\plugins\core\*.plg"') do ECHO %%~j
Wobei das ECHO erst mal nur ausgibt ...

Grüße
rubberman
bilalui
bilalui 25.09.2014 um 17:48:04 Uhr
Goto Top
Hallo,

danke für die schnellen Vorschläge. Ich glaube ich muss die Batch doch umändern so wie Bastla es machen würde. Trotzdem vielen Dank für eure Hilfe.


Bilalui