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





Impressum
Datenschutz