19.
Die Kubikwurzel mit VBS und einer Schummellösung mit CMD unter
Verwendung von VBS.
Dem Autor dieser Webseite fiel es auf, dass außer in Javascript keine
greifbare Lösung für CMD, Powershell und VBS gab. Daher dieser kleine
Exkurs.
Fangen wir mit einem VB-Script an, dass über eine Eingabe in einem
Inputfeld die Kubikwurzel erstellt:
Erstellen sie dazu ein Textdokument und kopieren Sie den folgenden
Codetext in das Textdokument. Vergeben sie irgendeinen Namen: also z. B. kubik.vbs.
Wichtig ist, dass Sie zuvor die Dateiendungen eingeblendet haben.
Dim kubikw
kubikw=InputBox ("Tragen sie die
Zahl mit einer Kommazahl ein!!!")
Rechnung = kubikw^(1/3)
ergebnis = Rechnung
ZielDatei = "Ergebnis.txt"
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZielDatei,
True).WriteLine ergebnis
Was macht das Script?
In der ersten Zeile wird eine Variable definiert. Die wird in der
zweiten Zeile als Inputbox definiert.
Hier trägt der User dann bei Ausführung des Scripts eine natürliche
Zahl oder Zahl mit Komma ein!
Danach geht es mit der Rechnung in Zeile zwei weiter und die
verklausulierte Syntax ist halt so. Für die vierte Wurzel müsste
eigentlich 1/4 stehen-:)
Bin zu faul das nachzuprüfen...
Die dritte Zeile schreibt die Rechnung in eine Variable. Dann wird noch
eine Variable für den Ergebnis.text definiert. Dort steht dann das
Ergebnis drin.
Das Ergebnis wird parallel im Ordner ausgedruckt und fertig.
Dann noch die Übergabe in einem Textdokument in einer Batch.
Dazu erstellen wir irgendeinname.bat
analog wie oben bei vbs beschrieben.
Der Code ist hier:
set /p "num=Gib eine Zahl mit
Punkt und Nachkommastellen ein: "
set destination=%~dp0%
>"%destination%Kubikwurzeln.vbs"
ECHO sqrtSource = %num%
>>"%destination%Kubikwurzeln.vbs"
ECHO sqrtResult = sqrtSource^^(1/3)
>>"%destination%Kubikwurzeln.vbs"
ECHO los = sqrtResult
>>"%destination%Kubikwurzeln.vbs"
ECHO Set FSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%Kubikwurzeln.vbs"
ECHO Set MyFile = FSO.CreateTextFile("%destination%cmd.txt ", TRUE)
>>"%destination%Kubikwurzeln.vbs"
ECHO MyFile.Close
>>"%destination%Kubikwurzeln.vbs"
ECHO Set MyFile = FSO.OpenTextFile("%destination%cmd.txt", 8)
>>"%destination%Kubikwurzeln.vbs"
ECHO MyFile.WriteLine (los)
>>"%destination%Kubikwurzeln.vbs"
ECHO MyFile.WriteLine ("Ende")
>>"%destination%Kubikwurzeln.vbs"
ECHO MyFile.Close
start /wait Kubikwurzeln.vbs
Ein wenig anderer VB-Script Code zur Abwechslung -:)
Ich frage in der ersten Zeile in der Konsole nach der Kubikwurzelzahl.
Diese wird als ganze Zahl, oder eben Mit Nachpunktstellen eingegeben.
Ja, man muss hier einen Punkt eingeben!
Dann setze ich einen Dateipfad in der zweiten Zeile, wo die Batch im
Ordner liegt: Spart mühsame Pfadangaben. Statt destination kann man
auch einen anderen Namen verwenden, muss diesen dann aber durchgängig
ersetzen...
Danach erstellt die cmd eine vbs. In der ersten Zeile mit einem >
wird wird VBS mit erster Zeile Code erstellt und das ist dann die Zahl,
die eingegeben wurde.
In der zweiten Zeile mit >> am Anfang wird eine Zeile
hinzugefügt. Beim Carot-Zeichen ^ muss man dieses verdoppeln, weil es
sonst entfällt.
Der passende Pfad wird über %destination% übergeben, denn VBS braucht
in dieser Variante einen Pfad.
Am Ende wird das VBS ausgeführt und in der VBS ein Textdokument
erstellt, welches dann als cmd.txt vorliegt.
Deshalb start wait. Danach kann die Batch durch anderen Text ergänzt
werden und z. B. durch del Kubikwurzeln.vbs das VBS wieder zerstört
werden.
Im Prinzip kann das Ergebnis nun über das Textdokument cmd.txt wieder
in die Batch importiert werden, aber das ist eigentlich auch irgendwo
sinnentleert, weil Man mit Kommastellen in einer Batch sowieso nicht
arbeiten kann -:)
Ach so, die Zeile mit Writeline Ende kann man löschen. Ist bloß
nützlich, wenn sie irgendeinen Text zwischen die Anführungszeichen von
("Ende")setzen wollen.
Rechnen mit VBS schrieb ich einen separaten Artikel.
Impressum