Datei nach VBS Skript Ausführung öffnen?
Hey,
ich kenne mich nicht so aus aber habe aus spaß mal ein vbs Skript geschrieben wo ich eine ähnlichen form im web gefunden haben. In meiner Datei ist es so das ein kleiner Text vorgelesen wird und dann ende. ich wollte fragen ob es möglich ist nach dem Text eine bat Datei automatisch zu starten?
hier ist ein Bild wie das Skript jetzt ist.
1 Antwort
VBS ist eine tote Sprache. diese wird nur noch genutzt/unterstützt, weil es massenhaft alte Scripte gibt!
Desse ungeachtet kannst Du natürlich folgende Batch schreiben.
talk.cmd
@echo off
rem schreibe Script
echo set oVoice=createobject("sapi.spvoice") >"talk.vbs"
echo oVoice.speak("Hallo wie gehts") >>"talk.vbs"
cscript //nologo "talk.vbs"
rem nächster Satz
echo set oVoice=createobject("sapi.spvoice") >"talk.vbs"
echo oVoice.speak("ich bin die Stimme") >>"talk.vbs"
cscript //nologo "talk.vbs"
pause
..gruselig... und sperrig
Natürlich könnte man auch die Texte über Argumente an ein VBS übergeben, was jedoch die Orgie mit der Zeilenweisen Ausgabe nur verlagert, da dann ein gutes Dutzend Zeilen für das VBS nötig sind.
Ich schreibe keine Demo dazu... lassen wir VBS in frieden sterben.
JavaScript kann mehere Befehle in einer Zeil ausführen (Befehl;Befehl;Befehl;Befehl;). Aus der Batch muss nachwievor ein HilfsScript gespeichert werden. Allerding erledigt dies eine einzelne Zeile mit mehreren Befehlen.
Dieses HilfsScript wird auch mit cscript ausgeführt aber (wie oben angekündigt) übergeben wir das was verarbeitet werden soll als Argumente an as Script
cscript //nologo "meinJavaScript.js" Argument argument usw
Die folgende Batch demonstriert noch weitere Verbesserungen, wie das verpacken obigen cscript-Aufrufs in ein Macro und die Einstellung der Sprachgeschwindigkeit/Lautstärke, Nutzung von Umlauten in Texten beim erzeugen des JavaScripts.
talkDemo2.cmd
@echo off
rem Umlaute erlauben
chcp 65001>nul
rem pfad zur Scriptdatei festlegen (Tempordner ist immer der beste Platz)
set "sayJS=%temp%\say.js"
rem sprachgeschwindigkeit einstellen (Werte von -10 bis 7 sind einigermaßen Sinnvoll)
set "Speed=-2"
rem lautstärke (0..100) (relativ zu den globalen Lautstärkeeinstellungen des Systems)
set "Volume=100"
rem das LaberScript in den tempordner schreiben
echo s=new ActiveXObject('SAPI.SpVoice');s.Rate=%Speed%;s.Volume=%Volume%;a=' ';for (i=0;i^<WScript.Arguments.length;i++){a+=WScript.Arguments(i)+' '};s.Speak(a,0)>"%sayJS%"
rem Aufrufmakro (es wäre doch blöd jedesmal die ganze Befehlszeile von Cscript zu schreiben)
rem Achtung am Ende der folgenden zile befindet sich ein Leerzeichen! (nicht vergessen, dieses ist unsichtbar!)
set talk=cscript //nologo "%sayJS%"
rem einfach zur Demo Text variablen festlegen
set "Text1=ich labere
set "Text2=was das Zeug herhält..."
rem Makro aufrufen
%talk% Ich bin die Stimme
rem ... oder
%talk% "Halöchen Herr und Meister"
rem oder auch
%talk% %text1% %text2%
%talk% "wollen wir spielen"
rem würfle eine Zahl
set /a "wurf=%random% %% 6 +1"
%talk% "ich habe eine %wurf% gewürfelt"
pause
Hier noch mal das JavaScript Zeilenweise und mit ordentlichen Variablennamen+ Kommentaren aufgelöst:
say.js (nur zur Anschauung)
//ObjectInstanz erzeugen
SpeakObject=new ActiveXObject('SAPI.SpVoice');
//Einstellen von Sprachgeschwindigkeit und Lautstärke
SpeakObject.Rate=-2;
SpeakObject.Volume=100;
//globale Variable, welche alle übergebenen argumente vereint
Args='';
//...alle Argumente durch ein Leerzeichen getrennt zum String Args hinzufügen
for (i=0; i<WScript.Arguments.length; i++){
Args+=WScript.Arguments(i)+' ';
};
//String Args aussprechen
SpeakObject.Speak(Args,0)