Windows Batch Programmierung

Hallo zusammen,

ich habe da ein kleines Problem mit einem Batch-Script.
Ich ziehe hier mal nur mein eigentliches Problem raus:

Aufgerufen wird folgendermaßen (und es ist nicht anders möglich, da dies von außen so kommt!)

Fall 1:
Code:
bla.bat abc
Fall 2:
Code:
bla.bat "abc def ghi usw usf"

Ich hätte gern folgende Ausgabe:

Fall 1:
Code:
abc
Fall 2:
Code:
abc
def
ghi
usw
usf

Fall 1 ist einfach ein echo %1, Fall 2 schon schwerer, aber auch dafür habe ich eine Lösung:

Code:
set path1=%1

for /f "tokens=*" %%i in (%path1%) do (
call :sub1 %%i
)
goto :eof

:sub1

:loop
echo %1
shift
if not %1'==' goto loop

:eof
exit

Das Problem jetzt, wie muss ich das Script umschreiben, um beide Fälle abzudecken? Bisher habe ich nichts finden können. Hoffe hier kann mir jemand weiterhelfen.

MfG lookshe

/edit:

Ich sollte noch dazu sagen, dass die Lösung für Fall 2 bei Fall 1 ein "File not found" sagt.
 
....machs doch einfach in C......wäre ein kleines bisschen einfacher
 
Original von LionC
....machs doch einfach in C......wäre ein kleines bisschen einfacher

Wie ich solche Vorschläge hier immer hasse... Ich werd es sicherlich nicht ohne Grund so machen (müssen). Etwas konstruktiver wäre schön. Aber wenn du es so viel besser weißt: Nenn mir bitte eine Scriptsprache, die Windows von Haus aus kann und die man einfach editieren kann und es andere Leute auch recht einfach verstehen und ändern können (VBScript fällt leider flach). Wenn du da etwas besseres weißt, bin ich gern für Vorschläge offen.

Aber mittlerweile hab ich das eh schon gelöst. Montag werd ich das Ergebnis mal posten.
 
dein genanntes problem wäre in c einfacher zu lösen, falls das ganze noch andere bedingungen erfüllen muss, dann nenne sie(höflich)
 
Ich bitte mal auf "machs in XY" Postings zu verzichten!
Vor allem nach dem schon erwähnt wurde, dass Batch hier sein muss :rolleyes:
 
So hier mal meine Lösung, es wird einfach stupide ignoriert, wenn Fall 1 eintritt und die Datei nicht existiert und dies mit Hilfe einer gesetzten Variable erkannt um dann den Aufruf extra zu machen.

Code:
set path1=%1

set dummy="set"

for /f "tokens=*" %%i in (%path1%) do (
call :sub1 %%i
set dummy "notset"
)
if %dummy%=="set" call :sub1 %path1%
goto :eof

:sub1

:loop
echo %1
shift
if not %1'==' goto loop

:eof
exit

So fliegt dann zwar noch der Fehler "File not found", aber der Rest verläuft so, wie ich es wollte.
 
Zurück
Oben