Batch: Alle Dateien in einem Ordner nacheinander einlesen?

... komplette Frage anzeigen

3 Antworten

for %a in (*.*) do IRGENDWAS mit %a

mit Drag und Drop müsste sowas gehen:

for %a in("%~1") do WASAUCHIMMER mit %a
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Internetgekillt
04.09.2016, 17:56

ups da hat nur die halbe antwort geladen ^^

0
Kommentar von Internetgekillt
04.09.2016, 18:13

for %a in ("%~1") do echo %a
pause

liefert im cmd ausgeführt:

"~1") do echo a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

C:\Users\Andreas\Documents\Test>for ~1") do echo a

0

Den beschriebenen Kontext-Menü-Eintrag wirst Du nur mit Hilfe der Registry einrichten können. Aber da solltest Du schon wissen, welche Datei-Typen, bzw. -Endungen mit dieser Batch verarbeitet werden sollen. Das geht aber auch global unter "HKCS\\*\\shell\\command".

Wie das nun im Detail intern abgearbeitet werden soll, habe ich in meinen anderen Kommentaren bereits angedeutet.

Am Besten Du rufst an der Console einfach mal die Hilfen auf:

HELP FOR

oder

FOR /?

Darin stehen alle Informationen, die Du brauchst. Natürlich geht das auch mit allen anderen Befehlen.

Antwort bewerten Vielen Dank für Deine Bewertung

Ok, also erstens: BATCH IST DER LETZTE MÜLL

Und nun zur Lösung des Problems:

for /R %~1 %%G in (*.*) do (call :foo "%%G")

man muss eine andere funktion aufrufen, denn DIESE BEHINDERTE SPRACHE erlaubt keine Variablendeklaration in einer for-Schleife. Zumindest kann man diese dann nicht mehr abrufen. Warum /R? Keine Ahnung ich hab einfach so lange rumprobiert bis es klappt. Warum %%G? Keine Ahnung, vermutlich weil BATCH SCHE*SSE IST!!! So den Rest meiner Probleme lasse ich jetzt mal weg.

Diese Antwort dient nur dazu, eine Lösung anzubieten, falls jemand durch googlen hierauf stößt.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von pythonpups
04.09.2016, 23:28

Ich hätte es etwas weniger drastisch ausgedrückt, aber im Prinzip stimme ich völlig zu...

0
Kommentar von MarkusGenervt
06.09.2016, 07:35

Keine Ahnung, aber gleich SCHEI55E schreien!

Variablen-Deklaration geht sehr wohl innerhalb einer FOR-Schleife und der Aufruf einer CALL-Prozedur innerhalb einer FOR-Schleife erzeugt auch keinen Austritt aus der FOR-Schleife. Dasselbe gilt auch für einen IF-Befehl.

Versuch's mal mit diesem Befehl hier:

setlocal enabledelayedexpansion

Natürlich sollte man wissen, dass dann die ID's der Variablen von "%" in "!" geändert werden müssen.


BATCH ist keinesfalls Müll – zumindest nicht unter Windows. Aber man sollte diese popel-einfache Skript-Sprache auch mal lernen. Also es gibt wirklich keine Sprache, die einfacher zu erlernen ist. Wer das nicht mal kann, sollte echt nicht so peinlich aufdrehen!

0