Skript um einen bestimmten Ordner mit variablem Namen zu finden und dann in dessen Pfad zu gehen

  • VBScript

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Skript um einen bestimmten Ordner mit variablem Namen zu finden und dann in dessen Pfad zu gehen

    Hallo liebe lesende,

    ich stehe hier vor einem Problem auf Arbeit, wo ich in vbs ein Script erstellen soll das mir einen Wert in eine Datei schreibt.
    So weit so gut, ich habe gestern also damit angefangen VBS zu "lernen" und mich daran versucht, so weit geht alles wunderbar.
    Nur muss ich einen Ordner betreten der einen variablen Namen hat und egal wie ich es auch versuche, finde ich keine Lösung um das durchzusetzen...

    Ich hoffe das Ihr mir da helfen könnt

    Das ist mein Code für das komplette Problem, was so weit funktioniert so lange der Name gleichbleibend ist.

    VB.NET-Quellcode

    1. Const ForReading = 1
    2. Const ForWriting = 2
    3. set WshShell = WScript.CreateObject("WScript.Shell")
    4. strAppData = WshShell.ExpandEnvironmentStrings("%AppData%")
    5. 'Um den Ordner nh7aq4qq.default geht es, allerdings ist der Name dieses Ordners variabel
    6. strdatei = "" & strAppData & "\Mozilla\Firefox\Profiles\nh7aq4qq.default\prefs.js"
    7. suche = "ublus"
    8. neu = "bla"
    9. Set objFSO = CreateObject("Scripting.FileSystemObject")
    10. Set objTest = objFSO.GetFile(strdatei)
    11. If objTest.Size > 0 Then
    12. Set objFile = objFSO.OpenTextFile(strdatei, ForReading)
    13. strText = objFile.ReadAll
    14. objFile.Close
    15. found = InStr(1, strText,suche)
    16. if found > 0 then
    17. elseif found = 0 then
    18. Set objFile = objFSO.OpenTextFile(strdatei, ForWriting)
    19. objFile.Write strText & vbCrLf & neu
    20. objFile.Close
    21. End If
    22. End If


    Einer meiner vielen Versuche sinnvoll auszulesen, bisher konnte ich nur Dateien ausgeben lassen.

    VB.NET-Quellcode

    1. Set objFSO = CreateObject("Scripting.FileSystemObject")
    2. Set Folder = objFSO.GetFolder("C:\Program Files")
    3. For Each x in Folder
    4. MsgBox Folder
    5. If InStr(Folder.Name, ".txt") > 0 Then
    6. Dim dir
    7. Set dir = Folder.Name
    8. MsgBox dir
    9. End If
    10. Next


    Bitte nicht daran stören wenn es sehr unsauber ist, wie gesagt mein erster Laufversuch in vbs.
    Danke schonmal im Vorraus für die Hilfe,

    Phil
    Hier eine Möglichkeit um Alle SubFolder auszulesen.
    Habe deinen Post nur gerade überflogen, aber nicht kapiert was du eigentlich willst?
    In welchen Ordner willst du, was möchtest du da drinne machen? Usw.
    Bitte genaue Erläuterung.

    VB.NET-Quellcode

    1. Set objFSO = CreateObject("Scripting.FileSystemObject")
    2. Set Folder = objFSO.GetFolder("C:\Program Files")
    3. For Each SubFolder in Folder.Subfolders
    4. MsgBox SubFolder
    5. Next

    Steht im Quelltext, zur Kurzbeschreibung nochmal:
    Das Endgültige Ziel ist es in eine Datei von Firefox einen Wert zu ändern auf allen PCs unserer Domain.

    Das Script soll erstmal in %Appdata%\... nach einem Ordner suchen der für jeden User einen anderen Name hat.
    Dann unter Verwendung dieses Namens in den Ordner gehen und dort in einer Datei einen Wert suchen.
    Falls dieser vorhanden ist super, da das Script beim Start jedes Pc's automatisch danach schaut soll es das damit gewesen sein.
    Falls nicht soll es diesen Wert eintragen welcher damit in die about:config eingetragen wird.

    Keine Ahnung warum es bisher nicht geklappt hat, ich bin der Meinung die von dir gebotene Lösung schon versucht zu haben, dennoch ging sie diesmal reibungslos!
    Noch eine kleine Anpassung auf mein Script hin und fertig!

    Danke vielmals!! Auch für die sehr schnelle Antwort!

    Mfg Phil


    Achso falls es jemand interessiert:

    VB.NET-Quellcode

    1. Const ForReading = 1
    2. Const ForWriting = 2
    3. Set WshShell = WScript.CreateObject("WScript.Shell")
    4. strAppData = WshShell.ExpandEnvironmentStrings("%AppData%")
    5. Set objFSO = CreateObject("Scripting.FileSystemObject")
    6. Set Folder = objFSO.GetFolder( ""& strAppData & "\Mozilla\Firefox\Profiles\")
    7. For Each Subfolder in Folder.Subfolders
    8. If InStr(Subfolder.Name, ".default") > 0 Then
    9. 'MsgBox Subfolder.Name
    10. strdatei = "" & strAppData & "\Mozilla\Firefox\Profiles\"& Subfolder.Name &"\prefs.js"
    11. elseif InStr(Subfolder.Name, ".default") < 1 Then
    12. strdatei = "" & strAppData & "\Mozilla\Firefox\Profiles\nh7aq4qq.default\prefs.js"
    13. End If
    14. Next
    15. suche = "xxx"
    16. neu = "blub"
    17. Set objFSO = CreateObject("Scripting.FileSystemObject")
    18. Set objTest = objFSO.GetFile(strdatei)
    19. If objTest.Size > 0 Then
    20. Set objFile = objFSO.OpenTextFile(strdatei, ForReading)
    21. strText = objFile.ReadAll
    22. objFile.Close
    23. found = InStr(1, strText,suche)
    24. if found > 0 then
    25. elseif found = 0 then
    26. Set objFile = objFSO.OpenTextFile(strdatei, ForWriting)
    27. objFile.Write strText & vbCrLf & neu
    28. objFile.Close
    29. End If
    30. End If

    Naja, soviele Profilordner werden da nicht drin sein. Dessen Namen herauszufinden ist dann auch nicht soo schwer. Hauptsache Du bist nicht einer der Admins von meiner Arbeit. Was die so mit unseren Rechnern machen ist teilweise abenteuerlich :)
    Gruß
    Peterfido

    Keine Unterstützung per PN!