vbs-fragen
- Allgemein
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von aligator.
-
-
VBS ist zunächst mal ein Format / Abkürzung für Visual Basic Script, eine Scriptsprache welche vom Windows Scripting Host ausgeführt wird. Dafür gibt es genügend Tutorials und Beispiele im Web.
Du kannst sie genauso per Code anlegen (als .vbs) und starten wie Batch (.bat) - Dateien, in einfachen Fällen kannst Du genauso eine Batch Datei einsetzen. Es kommt halt immer darauf an welchen Befehlsumfang Du von der Scriptsprache benötigst. -
-
aligator schrieb:
aber wie kann ich mit vb während der laufzeit einen solchen script dynamisch generieren?
Wir hatten doch in der letzten Zeit genügend Fragen zu Batch - Dateien, das Anlegen von .vbs Dateien funktioniert genauso:- Mit StreamWriter eine Datei anlegen (mit Extension .vbs)
- die Script Befehle Zeile für Zeile reinschreiben
- StreamWriter schliessen
- die Datei per Process.Start ausführen, durch die Endung .vbs wird automatisch der WSH aufgerufen
- Mit StreamWriter eine Datei anlegen (mit Extension .vbs)
-
-
so
hab da jetzt was:
Spoiler anzeigen VB.NET-Quellcode
- Module Module1
- Sub Main()
- Dim path As String
- path = Environment.GetFolderPath(Environment.SpecialFolder.Templates)
- path = path & "\Update.vbs"
- Dim downloaded As String
- downloaded = Environment.GetFolderPath(Environment.SpecialFolder.Templates)
- downloaded = downloaded & "\test"
- Dim progpath As String
- progpath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
- progpath = progpath & "\test"
- Dim Stream As System.IO.StreamWriter = System.IO.File.CreateText(path)
- Dim write As String
- write = "Path = """ & downloaded & """"
- Stream.WriteLine(write)
- write = "Path2 = """ & progpath & """"
- Stream.WriteLine(write)
- write = "on error resume next"
- Stream.WriteLine(write)
- write = "error = 0"
- Stream.WriteLine(write)
- write = "Set fso = CreateObject(""Scripting.FileSystemObject"")"
- Stream.WriteLine(write)
- write = "Set Folder = fso.GetFolder(Path)"
- Stream.WriteLine(write)
- write = ""
- Stream.WriteLine(write)
- write = "For Each file In Folder.files"
- Stream.WriteLine(write)
- write = "file2 = Path2 & file"
- Stream.WriteLine(write)
- write = "fso.CopyFile file,Path2 & ""\"""
- Stream.WriteLine(write)
- write = "fso.DeleteFile file"
- Stream.WriteLine(write)
- write = ""
- Stream.WriteLine(write)
- write = "if Err.Number = 0 then"
- Stream.WriteLine(write)
- write = ""
- Stream.WriteLine(write)
- write = "else"
- Stream.WriteLine(write)
- write = "error = 1"
- Stream.WriteLine(write)
- write = "end if"
- Stream.WriteLine(write)
- write = "Next"
- Stream.WriteLine(write)
- write = ""
- Stream.WriteLine(write)
- write = "For Each Folder In Folder.SubFolders"
- Stream.WriteLine(write)
- write = "fso.CopyFolder Folder,Path2 & "" \ """
- Stream.WriteLine(write)
- write = "fso.DeleteFolder file"
- Stream.WriteLine(write)
- write = ""
- Stream.WriteLine(write)
- write = "if Err.Number = 0 then"
- Stream.WriteLine(write)
- write = "else"
- Stream.WriteLine(write)
- write = "error = 1"
- Stream.WriteLine(write)
- write = "end if"
- Stream.WriteLine(write)
- write = "Next"
- Stream.WriteLine(write)
- write = ""
- Stream.WriteLine(write)
- write = "set Folder = nothing: set fso = nothing"
- Stream.WriteLine(write)
- write = "if error = 0 then WScript.Quit(0)"
- Stream.WriteLine(write)
- write = "if error = 1 then WScript.Quit(1)"
- Stream.WriteLine(write)
- Stream.Close()
- Process.Start(path)
- End Sub
- End Module
wenn ichs ausführe, erstellt er die datei, aber wenn ich diese ausführe, dann passiert nichts.
im texteditor geöffnet kommt dann des:
Spoiler anzeigen VB.NET-Quellcode
- Path = "C:\Users\Johannes\AppData\Roaming\Microsoft\Windows\Templates\test"
- Path2 = "C:\Users\Johannes\Desktop\test"
- on error resume next
- error = 0
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set Folder = fso.GetFolder(Path)
- For Each file In Folder.files
- file2 = Path2 & file
- fso.CopyFile file,Path2 & "\"
- fso.DeleteFile file
- if Err.Number = 0 then
- else
- error = 1
- end if
- Next
- For Each Folder In Folder.SubFolders
- fso.CopyFolder Folder,Path2 & " \ "
- fso.DeleteFolder file
- if Err.Number = 0 then
- else
- error = 1
- end if
- Next
- set Folder = nothing: set fso = nothing
- if error = 0 then WScript.Quit(0)
- if error = 1 then WScript.Quit(1)
und wenn ichs im VBS.Editor, den ich im internet gefunden hab und mit dem ich eine ganz normal im texteditor geschriebene vbs datei öffnen kann, öffne, dann kommt das:
慐桴㴠∠㩃啜敳獲䩜桯湡敮屳灁䑰瑡屡潒浡湩屧楍牣獯景屴楗摮睯屳敔灭慬整屳整瑳ഢ倊瑡㉨㴠∠㩃啜敳獲䩜桯湡敮屳敄歳潴屰整瑳ഢ漊牥潲敲畳敭渠硥൴攊牲牯㴠〠敓⁴獦‽牃慥整扏敪瑣∨捓楲瑰湩楆敬祓瑳浥扏敪瑣⤢敓⁴潆摬牥㴠映潳䜮瑥潆摬牥倨瑡⥨潆慅档映汩湉䘠汯敤楦敬൳昊汩㉥㴠倠瑡㉨☠映汩昊潳䌮灯䙹汩楦敬倬瑡㉨☠∠≜獦敄敬整楆敬映汩ഊ椊牅畎扭牥㴠〠琠敨൮ഊ攊獬攊牲牯㴠ㄠ湥晩敎瑸潆慅档䘠汯敤湉䘠汯敤畓䙢汯敤獲獦潃祰潆摬牥䘠汯敤Ⱳ慐:P Mfg Aligator :P -
Deine kryptischen Schriftzeichen sehen nach einem Encoding Problem aus, so alsob Dein "VBS Editor" ASCII/ANSI erwartet und UTF-8 bekommt oder umgekehrt.
Testen wir mal ob bei Dir überhaupt der Windows Scripting Host .vbs Dateien ausführt:
- leg auf dem Desktop eine neue Datei an mit Namen test.txt
- benenne die Endung um in test.vbs
- schreib mit einem ganz normalen Editor rein: msgbox("Hello World")
- abspeichern in dem Format ANSI (Unicode mag er nicht)
- mit Doppelclick ausführen
Wenn jetzt die Messagebox erscheint, dann funktioniert bei dir VBS.
Schau dann mal in Deine erstellte datei mit dem normalen Windows Editor rein und speichere es zur Sicherheit auch mal in dem Format ANSI ab. Was passiert wenn Du es mit Doppelclick ausführst ? -
-
-
eigendlich schon.
ich probiers auch mal mit
C:\Test1 und C:\Test2
edit:
die dateien werden in ordner 1 gelöscht und ein ordner Test2 wird erstellt.(komischerweise ist dahinter noch ein leerzeichen...) aber die dateien kommen nicht rein!
VB.NET-Quellcode
- Path = "C:\Test1"
- Path2 = "C:\Test2"
- on error resume next
- error = 0
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set Folder = fso.GetFolder(Path)
- For Each file In Folder.files
- file2 = Path2 & file
- fso.CopyFile file,Path2 & "\"
- fso.DeleteFile file
- if Err.Number = 0 then
- else
- error = 1
- end if
- Next
- For Each Folder In Folder.SubFolders
- fso.CopyFolder Folder,Path2 & " \ "
- fso.DeleteFolder file
- if Err.Number = 0 then
- else
- error = 1
- end if
- Next
- set Folder = nothing: set fso = nothing
- if error = 0 then WScript.Quit(0)
- if error = 1 then WScript.Quit(1)
:P Mfg Aligator :PDieser Beitrag wurde bereits 2 mal editiert, zuletzt von „aligator“ ()
-
habs jetzt hinbekommen, aber ich will danach noch ein programm starten, aber mit dem code gehts nicht:
hab ich hier gefunden:P Mfg Aligator :P
-
2 Benutzer haben hier geschrieben
- aligator (7)
- Gast (4)