Batch Programmierung For schleife stürzt ab?

1 Antwort

was heisst "abstürzen"? fehlermeldung?

Es kam keine Fehlermeldung. Hab mir aber schon selber weiter geholfen. Trotzdem danke :)

0

Wie kann ich den Batch-Umgebungspfad ändern?

(Dass die cmd-Zeile z.B. auch Programme und Befehle aus "C:\Windows\Batch_Umgebung\" akzeptiert)

...zur Frage

Wie kann man über cmd/batch eine Datei "analysieren"?

z.B: Dateiinhalt: "321"

In einer for-schleife (mit %%b)

set c=%%b

variable a%c%=3 (in diesem Fall variable a1)

variable a%c%=2 (in diesem Fall variable a2)

variable a%c%=1 (in diesem Fall variable a3)

...zur Frage

PYTHON - einfacher try/except Block?

Hey allesamt, ich soll für folgenden Code eine Ausnahmebehandlung durchführen (try/except):

Zahlen = [2, 4, 6, 8.1, "Zahl"]

Summe = 0

for Zahl in Zahlen:

Summe += Zahl

print Summe

Nun, ich weiß, dass die Zeile 4 (Summe += Zahl), sobald Zahl in der for-Schleife zu "Zahl" kommt, den Code zum Abstürzen bringt. Ich weiß auch, dass es sich hier um einen TypeError handeln muss, da das Summe bilden sowohl für int als auch für floats funktioniert, "Zahl" jedoch ein String ist.

Nun habe ich folgende Aufgabe:

(c) Fangen Sie den Fehler mit einer Ausnahmebehandlung ab. Dabei sollen nur Fehler, die in der in (a) gefundenen Programmzeile (also Zeile 4) auftreten, abgefangen werden. Code, der nach der fehlerhaften Codezeile kommt, soll nur ausgeführt werden, wenn kein Fehler aufgetreten ist.

Ich habe jetzt schon viel herumprobiert, scheitere allerdings beim letzten Punkt. So wie ich das verstehe, soll ich mittels try/except eben das Programm trotz Fehler weiterlaufen lassen können, allerdings eben soll das "print Summe", da es sich ja nach der fehlerhaften Codezeile befindet nicht ausgeführt werden.

Mein Code sieht so aus:

Zahlen = [2, 4, 6, 8.1, "Zahl"] 

Summe = 0 

try:

  for Zahl in Zahlen:

    Summe += Zahl

    print Summe

except TypeError:

  print "Falscher Typ! Nur Integer oder Float zulaessig!"

Die Ausgabe in der Konsole sieht so aus:

1

3

6

10.1

Falscher Typ! Nur Integer oder Float zulaessig!

Das Programm stürzt also trotz Fehler nicht ab (immerhin etwas), allerdings wird bis das Programm zu "Zahl" kommt die Summe gebildet. Und die soll ja, so wie ich das verstehe, nur gebildet werden, wenn es im ganzen Programm zu keinem Fehler kommt.

Ich verstehe es also so:

1 Fehler im Programm bringt mir lediglich die Ausgabe "Falscher Typ! Nur Integer oder Float zulaessig!"

Kein Fehler im Programm bewirkt, dass ich als Ausgabe jeweils die gebildete Summe bekomme.

Wie kann ich mein Programm mit einfachen Mitteln (try, except, for-Schleifen, if-else usw.) so umschreiben, dass es genau das tut was ich glaube, dass es tun soll?

Hoffe die Frage war nicht zu lang haha, vielen Dank im Vorhinein! LG

...zur Frage

BATCH - Variable - FOR-Schleife

Hallo habe folgendes Problem:

Habe ein ziemlich großes Batchprogramm geschrieben. Hier ein sehr kleiner Ausschnitt.

set /a closeprozent=100-((%targetsec%*100)/3000)
SETLOCAL ENABLEDELAYEDEXPANSION
for /L %%a in (%targetsec% -1 0) do (
cls
set /a targetminut=%%a/60
set /a closeprozent=100-((%%a*100)/3000)

Wie ihr seht habe ich vor der Schleife die Variable 'Closeprozent' deklariert. Der Wert wird korrekt definiert.

Vor der FOR-Schleife habe ich mit SETLOCAL die Variablenbelegung innerhalb der Schleife aktiviert, um 'targetminut' und 'closeprozent' innerhalb der Schleife ständig zu aktualisieren.

Die Variable 'Targetminut' wird ständig exakt bestimmt. Doch bei der Bestimmung von 'Closeprozent' bricht das ganze Programm schlagartig wie bei einem SYNTAX-Fehler ab.

An der %%a Variable, dem /a Attribut, dem Variablennamen, den Klammern liegt es nach mehreren Versuchen eindeutig nicht.

Bitte wirklich dringend um Hilfe.

LG Kevin

...zur Frage

Wie kann ich mit Batch aus einer Quelldatei mit einer FOR-Schleige GANZE Zeilen auslesen?

Ich habe mir bereits eine FOR-Schleife zu diesem Zwecke geschrieben, alledings bekomme ich leider nie die gesamte Zeile raus, sondern nur das erste Wort. Hier ist ein Beispiel:

Quelle.txt:

Hallo Alice!
Ich bin eine Testdatei.
Freut mich, dass du da bist.

Auslesen.bat:

@echo off
FOR /f %%f IN (Quelle.txt) DO echo %%f
pause >NUL

Kommandozeilenoutput:

Hallo
Ich
Freut

Danke für eure Hilfe! :)

...zur Frage

Was möchtest Du wissen?