vbs-fragen

  • Allgemein

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von aligator.

    hy

    gestern hab ich doch nach den updatemöglichkeiten gefragt.
    die möglichkeit mit vbs hat mir sehr gefallen. aber ich hab weder in google noch in der sufu gefunden, wie ich so einen vbs code erst im vb-prog generieren und dann ausführen kann.

    kann mir da jemand helfen?
    :P Mfg Aligator :P
    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
    so
    hab da jetzt was:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim path As String
    4. path = Environment.GetFolderPath(Environment.SpecialFolder.Templates)
    5. path = path & "\Update.vbs"
    6. Dim downloaded As String
    7. downloaded = Environment.GetFolderPath(Environment.SpecialFolder.Templates)
    8. downloaded = downloaded & "\test"
    9. Dim progpath As String
    10. progpath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    11. progpath = progpath & "\test"
    12. Dim Stream As System.IO.StreamWriter = System.IO.File.CreateText(path)
    13. Dim write As String
    14. write = "Path = """ & downloaded & """"
    15. Stream.WriteLine(write)
    16. write = "Path2 = """ & progpath & """"
    17. Stream.WriteLine(write)
    18. write = "on error resume next"
    19. Stream.WriteLine(write)
    20. write = "error = 0"
    21. Stream.WriteLine(write)
    22. write = "Set fso = CreateObject(""Scripting.FileSystemObject"")"
    23. Stream.WriteLine(write)
    24. write = "Set Folder = fso.GetFolder(Path)"
    25. Stream.WriteLine(write)
    26. write = ""
    27. Stream.WriteLine(write)
    28. write = "For Each file In Folder.files"
    29. Stream.WriteLine(write)
    30. write = "file2 = Path2 & file"
    31. Stream.WriteLine(write)
    32. write = "fso.CopyFile file,Path2 & ""\"""
    33. Stream.WriteLine(write)
    34. write = "fso.DeleteFile file"
    35. Stream.WriteLine(write)
    36. write = ""
    37. Stream.WriteLine(write)
    38. write = "if Err.Number = 0 then"
    39. Stream.WriteLine(write)
    40. write = ""
    41. Stream.WriteLine(write)
    42. write = "else"
    43. Stream.WriteLine(write)
    44. write = "error = 1"
    45. Stream.WriteLine(write)
    46. write = "end if"
    47. Stream.WriteLine(write)
    48. write = "Next"
    49. Stream.WriteLine(write)
    50. write = ""
    51. Stream.WriteLine(write)
    52. write = "For Each Folder In Folder.SubFolders"
    53. Stream.WriteLine(write)
    54. write = "fso.CopyFolder Folder,Path2 & "" \ """
    55. Stream.WriteLine(write)
    56. write = "fso.DeleteFolder file"
    57. Stream.WriteLine(write)
    58. write = ""
    59. Stream.WriteLine(write)
    60. write = "if Err.Number = 0 then"
    61. Stream.WriteLine(write)
    62. write = "else"
    63. Stream.WriteLine(write)
    64. write = "error = 1"
    65. Stream.WriteLine(write)
    66. write = "end if"
    67. Stream.WriteLine(write)
    68. write = "Next"
    69. Stream.WriteLine(write)
    70. write = ""
    71. Stream.WriteLine(write)
    72. write = "set Folder = nothing: set fso = nothing"
    73. Stream.WriteLine(write)
    74. write = "if error = 0 then WScript.Quit(0)"
    75. Stream.WriteLine(write)
    76. write = "if error = 1 then WScript.Quit(1)"
    77. Stream.WriteLine(write)
    78. Stream.Close()
    79. Process.Start(path)
    80. End Sub
    81. 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

    1. Path = "C:\Users\Johannes\AppData\Roaming\Microsoft\Windows\Templates\test"
    2. Path2 = "C:\Users\Johannes\Desktop\test"
    3. on error resume next
    4. error = 0
    5. Set fso = CreateObject("Scripting.FileSystemObject")
    6. Set Folder = fso.GetFolder(Path)
    7. For Each file In Folder.files
    8. file2 = Path2 & file
    9. fso.CopyFile file,Path2 & "\"
    10. fso.DeleteFile file
    11. if Err.Number = 0 then
    12. else
    13. error = 1
    14. end if
    15. Next
    16. For Each Folder In Folder.SubFolders
    17. fso.CopyFolder Folder,Path2 & " \ "
    18. fso.DeleteFolder file
    19. if Err.Number = 0 then
    20. else
    21. error = 1
    22. end if
    23. Next
    24. set Folder = nothing: set fso = nothing
    25. if error = 0 then WScript.Quit(0)
    26. 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:

    慐桴㴠∠㩃啜敳獲䩜桯湡敮屳灁䑰瑡屡潒浡湩屧楍牣獯景屴楗摮睯屳敔灭慬整屳整瑳ഢ倊瑡㉨㴠∠㩃啜敳獲䩜桯湡敮屳敄歳潴屰整瑳ഢ漊牥潲⁲敲畳敭渠硥൴攊牲牯㴠〠਍敓⁴獦‽牃慥整扏敪瑣∨捓楲瑰湩⹧楆敬祓瑳浥扏敪瑣⤢਍敓⁴潆摬牥㴠映潳䜮瑥潆摬牥倨瑡⥨਍਍潆⁲慅档映汩⁥湉䘠汯敤⹲楦敬൳昊汩㉥㴠倠瑡㉨☠映汩൥昊潳䌮灯䙹汩⁥楦敬倬瑡㉨☠∠≜਍獦⹯敄敬整楆敬映汩൥ഊ椊⁦牅⹲畎扭牥㴠〠琠敨൮ഊ攊獬൥攊牲牯㴠ㄠ਍湥⁤晩਍敎瑸਍਍潆⁲慅档䘠汯敤⁲湉䘠汯敤⹲畓䙢汯敤獲਍獦⹯潃祰潆摬牥䘠汯敤Ⱳ慐
    Was passt da nicht???
    :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

    1. Path = "C:\Test1"
    2. Path2 = "C:\Test2"
    3. on error resume next
    4. error = 0
    5. Set fso = CreateObject("Scripting.FileSystemObject")
    6. Set Folder = fso.GetFolder(Path)
    7. For Each file In Folder.files
    8. file2 = Path2 & file
    9. fso.CopyFile file,Path2 & "\"
    10. fso.DeleteFile file
    11. if Err.Number = 0 then
    12. else
    13. error = 1
    14. end if
    15. Next
    16. For Each Folder In Folder.SubFolders
    17. fso.CopyFolder Folder,Path2 & " \ "
    18. fso.DeleteFolder file
    19. if Err.Number = 0 then
    20. else
    21. error = 1
    22. end if
    23. Next
    24. set Folder = nothing: set fso = nothing
    25. if error = 0 then WScript.Quit(0)
    26. if error = 1 then WScript.Quit(1)
    :P Mfg Aligator :P

    Dieser 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:

    VB.NET-Quellcode

    1. Set WshShell = WScript.CreateObject("WScript.Shell")
    2. WshShell.Run("""" & "DER PFAD" & """")


    hab ich hier gefunden
    :P Mfg Aligator :P