Alternative Betriebssysteme 1.414 Themen, 9.994 Beiträge

Batch : For-Do-Schleife

edico / 4 Antworten / Baumansicht Nickles

Hej,

eine spanned disk (*.001, *.002, ...) soll mit FOR-DO-Schleife auf a: kopiert werden. Dazu ist also Diskettenwechsel notwendig. Die Anzahl der spanned disks ist vorab nicht geklärt, weil abhängig von der Grösse der gezippten Files. Mit IF und (umständlichen) Abfragen läuft mein Batch.
Kann ich die For-Do-Schleife mit mehreren Commands laufen lassen - also z.B.
for %%i in (set) do {existiert file?; echo Disk einlegen; copy a:}?

Vielen Dank. edico

bei Antwort benachrichtigen
Andreas42 edico „Batch : For-Do-Schleife“
Optionen

Hi!

Das hängt von Betriebssystem bzw. vom Commandoprozessor ab, wie elegant man das lösen kann.

Mit DR/Novell-DOS sollte es mit GOSUB/RETURN gehen). Ich denke andere Commandoprozessoren (also Alternativen zu Command.COM unter MSDOS) sowas auch bieten.

Was in jedem Fall gehen sollte ist die Verwendung von zwei Batches:

Ein Batch kopiert die Übergeben Datei auf A: (und wartet evtl. auf einen Tastendruck.

Dieser Batch wird dann vom zweiten Batch in der FOR-Anweisung aufgerufen (CALL-Anweisung verwenden).

Eine ande Möglichkeit wäre einfach

XCOPY *.* a: /P

Damit wird vor dem Kopieren jeder Datei gefragt, ob man kopieren will. Dann kann man natürlich die Diskette wechseln...

Ich hoffe, das hilft dir weiter.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
edico Andreas42 „Hi! Das hängt von Betriebssystem bzw. vom Commandoprozessor ab, wie elegant man...“
Optionen

Hej Andreas,

danke für die Gedanken. Ja, Du hast recht - das OS! Nun, es ist MS-DOS 7. Deine Lösung mit den 2 Batches unterstreicht meinen bisherigen Kenntnisstand, dass im Gegensatz zu Linux die For-do-Schleife nur einen Befehl akzeptiert und ein Piping nicht möglich scheint. Die Lösung mit xcopy ist komfortabel- siehste man sollte sich mehr mit den Optionen befassen. Muss ich mir noch mal genauer ansehen.
Zur Info, was mir zwischenzeitlich noch eingefallen ist - allerdings nicht mit copy, sondern mit move. Dies funktioniert aber:
.....
echo Move spanned disks
cd c:\arc
:START
if not exist A.* goto ENDE
if exist A.* echo Disk einlegen [RET]
pause > nul
move /Y A.* a: >nul
goto START
:ENDE
echo ... done

Und tschüss. edico

bei Antwort benachrichtigen
Andreas42 edico „Hej Andreas, danke für die Gedanken. Ja, Du hast recht - das OS! Nun, es ist...“
Optionen

Hi!

Die Idee mit Move ist auch elegant - daran hatte ich nicht gedacht.
Ich war noch am überlegen, ob man mit den File-Attributen arbeiten kann, da XCOPY die ja auswerten bzw. das Archiv-Attribut zurücksetzen kann.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
edico Andreas42 „Hi! Die Idee mit Move ist auch elegant - daran hatte ich nicht gedacht. Ich war...“
Optionen

Hej Andreas,
ja, aber das wird alles viel zu kopflastig.
Der Batch ist für einen Wenig-User, dem ich nichts zumuten konnte. Das muss so flutschen: Disk rein, Taste, fertig. Und so geht's ganz gut. Allerdings finde ich zwischenzeitlich Linux-Shellscripte wesentlich komfortabler.
Und tschüss. edico

bei Antwort benachrichtigen