suchtfrosch
Goto Top

Nicht Funktionierendes BATch Programm

Hallo,
ich habe ein BATch Programm geschrieben,
das den wert eines wiederstandes errechnen soll aber
es Funktioniert nicht.

kann mir da irgendjemand Helfen?
Schon mal im vorraus Danke.


@ echo off

color 0
mode con lines=30 cols=80 

chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
set Ohm=Ohm
chcp 850>nul

title Widerstanderrechner

:main
@ echo here main
cls
echo.
echo.
echo                           Wiederstandsberechner in %Ohm%
echo.
echo        Bitte schreiben sie eine 4 f%ue%r einen wiederstand mit 4 Farben und
echo                  eine 5 f%ue%r einen wiederstand mit 5 Farben und
echo                        dr%ue%cken sie anschlie%ss%end auf Enter
echo                   Um das Programm zu schlie%ss%en schreiben sie S
echo.
echo.
echo.
echo.
echo.
echo.

set/p klick=
if %klick%==5 goto 5
if %klick%==4 goto 4
if %klick%==S goto schliessen
if %klick%==s goto schliessen

:5
cls
echo.
echo.
echo                        Wiederstandsberechner in %Ohm%
echo.
echo.
echo                   Bitte beacht sie die Tabelle rechts 
echo.
echo                  Die f%ue%nfte farbe wird nicht berechnet,
echo             dadurch sie f%ue%r das Ergebnis nicht rellevant ist.                    
echo        Zahlen der f%ae%rben von 1 und 3 direkt hintereinnander schreibe.
echo.           
echo.

set /p Farbe1=Erste Farbe :
call :sub1
set /p Farbe2=Zweite Farbe :
call :sub1
set /p Farbe3=Dritte Farbe :
call :sub1
set /p multiplikator=Vierte Farbe :
call :sub2
echo.
set /a Erg= %Farbe1% %Farbe2% %Farbe3%*%multiplikator%
echo.
echo Der Wiederstandswert betr%ae%gt %Erg% %Ohm%
echo.
set/p klick=
if %klick%==S goto schliessen
pause>1

echo.
echo.
echo           Fuer die umrechnung in Kilo-, Mega-, Giga- und Tera-%Ohm%.
echo        Schreiben sie jetzt eine der Einheiten und dr%ue%cken sie enter.
echo        Falls das Ergebnis verschwindet dr%ue%cken sie so oft enter bis 
echo               ihr uhrspr%ue%ngliches Ergebnis wieder komt und 
echo              versuchen sie es mit einener kleineren einheit
echo.
echo.

set/p klick=
if %klick%==Kilo-R goto Kilo
if %klick%==Kilo goto Kilo
if %klick%==kilo-R goto Kilo
if %klick%==kilo goto Kilo
if %klick%==K goto Kilo
if %klick%==k goto Kilo
if %klick%==Mega-R goto Mega
if %klick%==Mega goto Mega
if %klick%==mega-R goto Mega
if %klick%==mega goto Mega
if %klick%==M goto Mega
if %klick%==m goto Mega
if %klick%==Giga-R goto Giga
if %klick%==Giga goto Giga
if %klick%==giga-R goto Giga
if %klick%==giga goto Giga
if %klick%==G goto Giga
if %klick%==g goto Giga
if %klick%==Tera-R goto Tera
if %klick%==Tera goto Tera
if %klick%==tera-R goto Tera
if %klick%==tera goto Tera
if %klick%==T goto Tera
if %klick%==t goto Tera
if %klick%==S goto schliessen
if %klick%==s goto schliessen
echo.
goto main

:4
cls
echo.
echo.
echo                       Wiederstandsberechner in %Ohm%
echo.
echo.
echo                   Bitte beacht sie die Tabelle rechts 
echo.
echo                  Die Vierte farbe wird nicht berechnet,
echo             dadurch sie f%ue%r das Ergebnis nicht rellevant ist.                    
echo        Zahlen der f%ae%rben von 1 und 2 direkt hintereinnander schreibe.
echo. 
          
set /p Farbe1=Erste Farbe :
call :sub1
set /p Farbe2=Zweite Farbe :
call :sub1
set /p multiplikator=Dritte Farbe :
call :sub2
echo.
set /a Erg= %Farbe1% %Farbe2%*%multiplikator%
echo.
echo Der Wiederstandswert betr%ae%gt %Erg% %Ohm%
set/p klick=
if %klick%==S goto schliessen
if %klick%==s goto schliessen
pause>1

echo.
echo.
echo           F%ue%r die umrechnung in Kilo-, Mega-, Giga- und Tera-%Ohm%.
echo         Schreiben sie jetzt eine der Einheiten und drücken sie enter.
echo        Falls das Ergebnis verschwindet dr%ue%cken sie so oft enter bis 
echo               ihr uhrspr%ue%ngliches Ergebnis wieder komt und 
echo              versuchen sie es mit einener kleineren einheit
echo.
echo.

set/p klick=
if %klick%==Kilo-R goto Kilo
if %klick%==Kilo goto Kilo
if %klick%==kilo-R goto Kilo
if %klick%==kilo goto Kilo
if %klick%==K goto Kilo
if %klick%==k goto Kilo
if %klick%==Mega-R goto Mega
if %klick%==Mega goto Mega
if %klick%==mega-R goto Mega
if %klick%==mega goto Mega
if %klick%==M goto Mega
if %klick%==m goto Mega
if %klick%==Giga-R goto Giga
if %klick%==Giga goto Giga
if %klick%==giga-R goto Giga
if %klick%==giga goto Giga
if %klick%==G goto Giga
if %klick%==g goto Giga
if %klick%==Tera-R goto Tera
if %klick%==Tera goto Tera
if %klick%==tera-R goto Tera
if %klick%==tera goto Tera
if %klick%==T goto Tera
if %klick%==t goto Tera
if %klick%==S goto schliessen
if %klick%==s goto schliessen
echo.
pause>1
goto main

:Kilo
set /a k=%Erg%/1000
echo der Wiedersatandswert betr%ae%gt %k% Kilo-%Ohm%
set/p klick=
if %klick%==S goto schliessen
if %klick%==s goto schliessen
pause>1
goto main

:Mega
set /a m=%Erg%/1000000
echo der Wiederstandswert betr%ae%gt %m% Mega-%Ohm%
set/p klick=
if %klick%==S goto schliessen
if %klick%==s goto schliessen
pause>1
goto main

:Giga
set /a g=%Erg%/1000000000
echo der Wiederstandswert betr%ae%gt %g% Giga-%Ohm%
set/p klick=
if %klick%==S goto schliessen
if %klick%==s goto schliessen
pause>1
goto main

:Tera
set /a t=%Erg%/1000000000000
echo der Wiederstandswert betr%ae%gt %t% Tera-%Ohm%
set/p klick=
if %klick%==S goto schliessen
if %klick%==s goto schliessen
paus>1
goto main

:schliessen
echo.
echo   Wollen sie wirklich das Programm schlie%ss%en?
echo          J f%ue%r Ja und N f%ue%r Nein
echo.
echo.
set/p klick=
if %klick%==J goto Ja
if %klick%==N goto Nein
if %klick%==j goto Ja
if %klick%==n goto Nein
pause>1

:sub1
SET schwarz=0
SET braun=1
SET rot=2
SET orange=3
SET gelb=4
SET grün=5
SET blau=6
SET lila=7
SET grau=8
SET weiß=9
goto :eof

:sub2
SET silber=-100
SET gold=-10
SET schwarz=0
SET braun=10
SET rot=100
SET orange=1000
SET gelb=10000
SET grün=100000
SET blau=1000000
SET lila=10000000
SET grau=100000000
SET weiß=1000000000
goto :eof

:Nein
goto main

:Ja
es funktioniert nicht

Content-Key: 490573

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

Printed on: April 19, 2024 at 15:04 o'clock

Member: NordicMike
NordicMike Aug 31, 2019 updated at 15:15:49 (UTC)
Goto Top
Ich lese das jetzt nicht alles durch, nur, weil vielleicht eine Zeile nicht funktioniert.

Für welches Betriebssystem? Wie weit kommt das Programm? Kommt noch die Auswahl der Anzahl der Ringe des Widerstands? Wo geht es nicht weiter oder was zeigt er nicht richtig an?
Wie weit bist Du selbst mit der Eingrenzung gekommen?
Member: manuel-r
manuel-r Aug 31, 2019 at 15:23:57 (UTC)
Goto Top
ich habe ein BATch Programm geschrieben, das den wert eines wiederstandes errechnen soll

Warum macht man sowas???
Es gibt Tools die deutlich zeitgemäßer und für den Zweck auch besser geeignet sind. Die Powershell zum Beispiel oder auch VBScript.
Hier und da ist man auch heute tatsächlich mit Batch noch schneller am Ziel. Aber ganz sicher nicht bei sowas wie dem da oben...

Manuel

PS:
Ich echt jedes Mal erstaunt, wenn hier eine Batch-Frage auftaucht was im Jahr 2019 noch alles damit gelöst werden soll.
Member: NordicMike
NordicMike Aug 31, 2019 at 16:00:25 (UTC)
Goto Top
Der Fehler, den er im Code hat, steht vermutlich in keiner Lektüre ;)
Aber er soll erst einmal selbst debuggen und Checkpoints einbauen, bevor er uns die Arbeit machen lässt face-smile
Member: NordicMike
NordicMike Aug 31, 2019 at 16:04:27 (UTC)
Goto Top
Warum macht man sowas???
Nur zum Üben und Lernen
Member: SuchtFrosch
SuchtFrosch Sep 01, 2019 at 06:47:09 (UTC)
Goto Top
Mein Problem ist das das Programm die Farben nicht in Zahlen umwandelt.
Hier ein ist das problem in einer älteren Form
Das Problem tritt auf in Zeile 58-69, 129-138 und 234-260.
Member: SuchtFrosch
SuchtFrosch Sep 01, 2019 at 06:50:35 (UTC)
Goto Top
Ich hatte nur im Windows Store nach einer Kostenfreien app gesucht und keine gefunden.
deswegen habe ich angefangen eine zu Programmieren.
Ich weiss zwar jetzt das es so etwas auch Online gibt aber ich möchte das Projekt Trotzdem noch ERFOLGREICH beenden.
Member: NordicMike
NordicMike Sep 01, 2019 at 11:32:49 (UTC)
Goto Top
In Zeile 58 hast Du die Variable mit einem einzugebenden Wert gefüllt. Eine Zeichenfolge z.B. rot. Das heißt in der Variable Farba1 befindet sich die Zeichenfolge „rot“.
Dann springst Du zu sub1, in der weitere Variablen erzeugt werden z.B. Variable rot hat den Inhalt bzw den Wert 2.

Nun befinden sich im Speicher zwei Variablen:
Farbe1=„rot“
rot=2
Danach verwendest Du in der Zusammensetzung der Farben wieder die Variable Farbe1, die immer noch „rot“ beinhaltet. Und so geht es weiter. Die Variable rot mit dem Inhalt 2 wird gar nicht weiter ausgewertet oder verwendet.
Was Dir fehlt ist die Auswertung der Eingabe, was in die Variable Farbe1 passiert ist. Also sowas:
Wenn die Variable Farbe1 den Inhalt „rot“ hat, dann soll Variable Ring1 eine 2 bekommen. Danach musst Du beim zusammensetzen nicht den Inhalt von Farbe1, sondern den Inhalt von Ring1 verwenden.
Member: em-pie
em-pie Sep 01, 2019 at 18:51:07 (UTC)
Goto Top
Moin,

Das ist doch innerlich der gleiche Quatsch, wie hier: In einer batch datei einen wert definieren

Gruß
em-pie
Member: NordicMike
NordicMike Sep 01, 2019 at 18:56:02 (UTC)
Goto Top
Er hat es ja auch 3 Beiträge weiter oben schon verlinkt. Er hat er vermutlich noch nicht verstanden.