3 vbscripts in 1 vbscirpt ausführen
Morgen an alle
Erster Script verschiebt, convertiert und startet folge Script:
Zweiter Script löscht Szenerie Eintrag , convertiert und startet folge Script:
Dritter Sciript nennt Datei um und verschiebt diese wider zurück:
So wie oben beschriben ausgeführt funktionieren diese 3 Scripts fehlerlos!
Ist es möglich diese Scripts in einem auszuführen?
Erster Script verschiebt, convertiert und startet folge Script:
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\ProgramData\Lockheed Martin\Prepar3D v4\scenery.cfg" , "C:\zATi\scenery.cfg"
Const ForReading = 1
Const TristateTrue = -1 'UniCode
FilePath = "C:\zATi\scenery.cfg"
Set oFSO = CreateObject("scripting.filesystemobject")
Set oFile = oFSO.GetFile(FilePath)
Set oFileIn = oFSO.OpenTextFile(oFile.Path,ForReading,,TristateTrue)
Set oFileOut = oFSO.CreateTextFile(oFile.ParentFolder & "\ansi_" & oFile.Name,True,False)
oFileOut.Write oFileIn.ReadAll
set wshell = CreateObject("Wscript.shell")
wshell.run "C:\zATi\RemoveSceneryII.vbs"
Zweiter Script löscht Szenerie Eintrag , convertiert und startet folge Script:
Set objFileSystem = Wscript.CreateObject("Scripting.FileSystemObject")
objFileSystem.DeleteFile "C:\zATi\scenery.cfg" ,True
Set objFilesystem = Nothing
CfgFilePath = "C:\zATi\ansi_scenery.CFG"
Dim Record (10000)
ScenTitle = "Title=MyScenery"
EntryNumRows = 6
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile(CfgFilePath, 1, FALSE)
i = 1
Do While Not a.AtEndOfStream
aLine = a.ReadLine
PosTitle=Instr(1, aLine, ScenTitle)
If PosTitle <> 0 Then
StartRow = i-1
EndRow = StartRow + EntryNumRows - 1
End If
Record(i) = aLine
i = i+1
Loop
a.Close
Set a = fs.CreateTextFile(CfgFilePath, True)
For n = 1 To i-1
If (n < StartRow) or (n > EndRow) then
a.WriteLine(Record(n))
End If
Next
a.Close
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder("C:\zATi")
Set oFiles = oFolder.files
For each file in oFiles
If Right(file.Name, 3) = "cfg" Then
Set ANSIFile = fso.OpenTextFile(file.path, 1, False, False)
ANSIContent = ANSIFile.ReadAll
Set UNICODEFile = fso.OpenTextFile(file.path, 2, False, True)
UNICODEFile.Write ANSIContent
End If
Next
set wshell = CreateObject("Wscript.shell")
wshell.run "C:\zATi\RemoveSceneryIII.vbs"
Dritter Sciript nennt Datei um und verschiebt diese wider zurück:
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\zATi\ansi_scenery.cfg" , "C:\ProgramData\Lockheed Martin\Prepar3D v4\scenery.cfg"
So wie oben beschriben ausgeführt funktionieren diese 3 Scripts fehlerlos!
Ist es möglich diese Scripts in einem auszuführen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 343605
Url: https://administrator.de/contentid/343605
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
ja, warum nicht?
E.
Edit:
Ich habe das gleich ein bisschen ausgedünnt und diese mehrfachen FSO-Objekte auf eins reduziert.
ja, warum nicht?
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\ProgramData\Lockheed Martin\Prepar3D v4\scenery.cfg" , "C:\zATi\scenery.cfg"
Const ForReading = 1
Const TristateTrue = -1 'UniCode
FilePath = "C:\zATi\scenery.cfg"
Set oFile = objFSO.GetFile(FilePath)
Set oFileIn = objFSO.OpenTextFile(oFile.Path,ForReading,,TristateTrue)
Set oFileOut = objFSO.CreateTextFile(oFile.ParentFolder & "\ansi_" & oFile.Name,True,False)
oFileOut.Write oFileIn.ReadAll
objFSO.DeleteFile "C:\zATi\scenery.cfg" ,True
CfgFilePath = "C:\zATi\ansi_scenery.CFG"
Dim Record(10000)
ScenTitle = "Title=MyScenery"
EntryNumRows = 6
Set a = objFSO.OpenTextFile(CfgFilePath, 1, FALSE)
i = 1
Do While Not a.AtEndOfStream
aLine = a.ReadLine
PosTitle=Instr(1, aLine, ScenTitle)
If PosTitle <> 0 Then
StartRow = i-1
EndRow = StartRow + EntryNumRows - 1
End If
Record(i) = aLine
i = i+1
Loop
a.Close
Set a = objFSO.CreateTextFile(CfgFilePath, True)
For n = 1 To i-1
If (n < StartRow) or (n > EndRow) then
a.WriteLine(Record(n))
End If
Next
a.Close
Set oFolder = objFSO.GetFolder("C:\zATi")
Set oFiles = oFolder.files
For each file in oFiles
If Right(file.Name, 3) = "cfg" Then
Set ANSIFile = fso.OpenTextFile(file.path, 1, False, False)
ANSIContent = ANSIFile.ReadAll
Set UNICODEFile = fso.OpenTextFile(file.path, 2, False, True)
UNICODEFile.Write ANSIContent
End If
Next
objFSO.MoveFile "C:\zATi\ansi_scenery.cfg" , "C:\ProgramData\Lockheed Martin\Prepar3D v4\scenery.cfg"
E.
Edit:
Ich habe das gleich ein bisschen ausgedünnt und diese mehrfachen FSO-Objekte auf eins reduziert.
Datei wir in Zeile 11 geöffnet aber vor dem Löschen das Handle nicht geschlossen
Ein
vor dem Löschvorgang in Zeile 16 sollte helfen, ansonsten stimmen die Rechte nicht.
Gruß
Ein
oFileIn.Close
vor dem Löschvorgang in Zeile 16 sollte helfen, ansonsten stimmen die Rechte nicht.
Gruß
Dann hat das Skript keine Berechtigung zum Löschen der Datei, elevated starten...