chris-jerusalem
Goto Top

Probleme bei VBscript Verzeichnis erstellen, Kopieren, Prozesse beenden

Hallo zusammen,

erstmal was das Script machen soll. Es soll als erstes einen definierten Ordner erstellen. Danach sollen aus einem Verzeichniss vordefinierte Log Dateieen in das grade erstellte Verzeichniss kopiert werden. Danach geht es weiter mit dem beenden verschiedener Prozesse. Und einer abschließenenden Message Box. Alle einzelnen Teile des Scripts hab ich schon getestet und bastel es jetzt zusammen.

Hier erstmal das Script:


'**************************************************************************  
'	File:  		  Final_Script.vbs                                                   
'                                                                                
'	Autor: 		  Christian Jerusalem                                                
'                                                                                 
'	Company:	  XX GmbH                                                        
'                                                                               
'	Comments: 	Final_Script XXl.                                            
'				      Anlegen eines Backup Ordners, Transfer bzw. kopieren           
'				      der Log Dateien in diesen Ordner.                              
'				      Ausgabe der Aufforderung Dienste zu beenden.                   
'**************************************************************************  

'Ordner erstellen  
dim objFSO

'File kopieren  
Dim objFSO1
dim objFile

'zu erstellender Ordner  
strFldr="C:\Dokumente und Einstellungen\je\Desktop\Backup Logs"   

set objFSO=CreateObject("Scripting.FileSystemObject")  

objFSO.CreateFolder(strFldr)

set objFSO=Nothing

Dim runtime
runtime = "C:\Dokumente und Einstellungen\je\Desktop\BoFiT\BoFiT-Server\pm"  

'Dateien die kopiert werden soll  
strFile1= runtime + "\log\ENW.log"  
strFile2= runtime + "\log\PMBeenden.log"  
strFile3= runtime + "\log\PMSystem.log"  
strFile4= runtime + "\log\PMServerService_app.log"  
strFile5= runtime + "\log\PMServerService.log"  
strFile6= runtime + "\shark\logs\*.*"  
strFile7= runtime + "\export\log\*.*"  
strFile8= runtime + "\import\log\*.*"  

'Ordner in dem die Datei kopiert werden soll  
strDest="C:\Dokumente und Einstellungen\je\Desktop\Backup Logs"  

set objFSO1=CreateObject("Scripting.FileSystemObject")  

'Setzen des Parameters auf TRUE wenn eine   
'existierende Datei überschrieben werden soll.  
objFSO1.CopyFile strFile1,strDest,TRUE
objFSO1.CopyFile strFile2,strDest,TRUE
objFSO1.CopyFile strFile3,strDest,TRUE
objFSO1.CopyFile strFile4,strDest,TRUE
objFSO1.CopyFile strFile5,strDest,TRUE
objFSO1.CopyFile strFile6,strDest,TRUE
objFSO1.CopyFile strFile7,strDest,TRUE
objFSO1.CopyFile strFile8,strDest,TRUE

'Beenden der Prozesse  
pc = "localhost"  
programm = "'assembly_manager.exe'"  
Set wmi = GetObject("winmgmts:" _  
& "{impersonationLevel=impersonate}!\\" _  
& pc & "\root\cimv2")  
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )  
For Each obj in col
obj.Terminate()
Next

pc = "localhost"  
programm = "'CIAO-Deamon.exe'"  
Set wmi = GetObject("winmgmts:" _  
& "{impersonationLevel=impersonate}!\\" _  
& pc & "\root\cimv2")  
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )  
For Each obj in col
obj.Terminate()
Next

pc = "localhost"  
programm = "'Java.exe'"  
Set wmi = GetObject("winmgmts:" _  
& "{impersonationLevel=impersonate}!\\" _  
& pc & "\root\cimv2")  
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )  
For Each obj in col
obj.Terminate()
Next

pc = "localhost"  
programm = "'Naming_Service.exe'"  
Set wmi = GetObject("winmgmts:" _  
& "{impersonationLevel=impersonate}!\\" _  
& pc & "\root\cimv2")  
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )  
For Each obj in col
obj.Terminate()
Next

pc = "localhost"  
programm = "'PMServerService.exe'"  
Set wmi = GetObject("winmgmts:" _  
& "{impersonationLevel=impersonate}!\\" _  
& pc & "\root\cimv2")  
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )  
For Each obj in col
obj.Terminate()
Next

pc = "localhost"  
programm = "'RTComponentServer.exe'"  

Set wmi = GetObject("winmgmts:" _  
& "{impersonationLevel=impersonate}!\\" _  
& pc & "\root\cimv2")  
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )  
For Each obj in col
obj.Terminate()
Next
Msgbox("BoFiT Prozesse beendet!")  

'Ausgabe der Aufforderung die Dienste neu zu starten  
MsgBox "Bitte starten Sie den BoFiT-PM-Server neu!"  
'Ausgabe der Aufforderung die Dienste neu zu starten genauer Weg  
MsgBox "Rufen Sie dafür in der Systemsteuerung die Cluster-Verwaltung auf und beenden Sie dort den BoFiT Server Dienst!"  


Und nun mein Problem:
Das erstellen des Verzeichnisses ist kein Problem das funktioniert. Nur bei Zeile 50 Zeichen 1 gibts einen Fehler "Erlaubnis verweigert". Ich habe auf dem Rechner volle Administrator Rechte.
Das ist der Bereich ab der ersten Programm Zeile:
'Setzen des Parameters auf TRUE wenn eine   
'existierende Datei überschrieben werden soll.  
objFSO1.CopyFile strFile1,strDest,TRUE
objFSO1.CopyFile strFile2,strDest,TRUE
objFSO1.CopyFile strFile3,strDest,TRUE
objFSO1.CopyFile strFile4,strDest,TRUE
objFSO1.CopyFile strFile5,strDest,TRUE
objFSO1.CopyFile strFile6,strDest,TRUE
objFSO1.CopyFile strFile7,strDest,TRUE
objFSO1.CopyFile strFile8,strDest,TRUE

Weiß da jemand einen Rat?

Gruß
Christian

Content-Key: 94326

Url: https://administrator.de/contentid/94326

Printed on: April 19, 2024 at 15:04 o'clock

Member: bastla
bastla Aug 13, 2008 at 10:59:57 (UTC)
Goto Top
Hallo chris-jerusalem!

Wenn Du bei der Zielangabe "strDest" (entweder in Zeile 44 oder mit
 objFSO1.CopyFile strFile1,strDest & "\",TRUE  
jeweils bei den "CopyFile"-Anweisungen) an das Ende noch einen "\" setzt, sollte es gehen, da in diesem Fall das Ziel richtig als Ordner interpretiert wird - ohne "\" sieht VBS es als Dateipfad an und kann dann natürlich den Ordner nicht durch eine Datei ersetzen.

Grüße
bastla
Member: chris-jerusalem
chris-jerusalem Aug 13, 2008 at 11:23:14 (UTC)
Goto Top
Ja ich habe eine lösung gefunden, hier mein fertiges Script:

'
' File: Final_Script.vbs
'
' Autor: Christian Jerusalem
'
' Company: xx GmbH
'
' Comments: Final_Script xxl.
' Anlegen eines Backup Ordners, Transfer bzw. kopieren
' der Log Dateien in diesen Ordner.
' Ausgabe der Aufforderung Dienste neu zu starten.
'


'Ordner erstellen
dim objFSO

'File kopieren
Dim objFSO1
dim objFile

'zu erstellender Ordner incl Datum u. Uhrzeit
wDateTime = Year(Now) & Right("00" & Month(Now), 2) & Right("00" & Day(Now), 2) + "_" + Right("00" & Hour(Now), 2) & Right("00" & Minute(Now), 2)
strFldr="C:\Dokumente und Einstellungen\je\Desktop\Backup Logs " + wDateTime

set objFSO=CreateObject("Scripting.FileSystemObject")

if Not objFSO.FolderExists(strFldr) Then
objFSO.CreateFolder(strFldr)
end if

set objFSO=Nothing

Dim runtime
runtime = "C:\Dokumente und Einstellungen\je\Desktop\BoFiT\BoFiT-Server\pm"

strDest=strFldr

'Dateien die kopiert werden soll
strFile1= runtime + "\log\ENW.log"
strDest1= strDest + "\ENW.log"
strFile2= runtime + "\log\PMBeenden.log"
strDest2= strDest + "\PMBeenden.log"
strFile3= runtime + "\log\PMSystem.log"
strDest3= strDest + "\PMSystem.log"
strFile4= runtime + "\log\PMServerService_app.log"
strDest4= strDest + "\PMServerService_app.log"
strFile5= runtime + "\log\PMServerService.log"
strDest5= runtime + "\PMServerService.log"
strFile6= runtime + "\shark\logs\*.*"
strFile7= runtime + "\export\log\*.*"
strFile8= runtime + "\import\log\*.*"

'Ordner in dem die Datei kopiert werden soll

set objFSO1=CreateObject("Scripting.FileSystemObject")

'Setzen des Parameters auf TRUE wenn eine
'existierende Datei überschrieben werden soll.
objFSO1.CopyFile strFile1,strDest1,TRUE
objFSO1.CopyFile strFile2,strDest2,TRUE
objFSO1.CopyFile strFile3,strDest3,TRUE
objFSO1.CopyFile strFile4,strDest4,TRUE
objFSO1.CopyFile strFile5,strDest5,TRUE
objFSO1.CopyFile strFile6,strDest,TRUE
objFSO1.CopyFile strFile7,strDest,TRUE
objFSO1.CopyFile strFile8,strDest,TRUE

'Beenden der Prozesse
pc = "localhost"
programm = "'assembly_manager.exe'"
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& pc & "\root\cimv2")
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )
For Each obj in col
obj.Terminate()
Next

pc = "localhost"
programm = "'CIAO-Deamon.exe'"
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& pc & "\root\cimv2")
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )
For Each obj in col
obj.Terminate()
Next

pc = "localhost"
programm = "'Java.exe'"
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& pc & "\root\cimv2")
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )
For Each obj in col
obj.Terminate()
Next

pc = "localhost"
programm = "'Naming_Service.exe'"
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& pc & "\root\cimv2")
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )
For Each obj in col
obj.Terminate()
Next

pc = "localhost"
programm = "'PMServerService.exe'"
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& pc & "\root\cimv2")
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )
For Each obj in col
obj.Terminate()
Next

pc = "localhost"
programm = "'RTComponentServer.exe'"
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& pc & "\root\cimv2")
Set col = wmi.ExecQuery _
("Select * from Win32_Process Where Name = " & programm )
For Each obj in col
obj.Terminate()
Next
'Ausgabe Prozesse beendet
Msgbox("BoFiT Prozesse beendet!")

'Ausgabe der Aufforderung die Dienste neu zu starten
MsgBox "Bitte starten Sie den BoFiT-PM-Server neu!"
'Ausgabe der Aufforderung die Dienste neu zu starten genauer Weg
MsgBox "Rufen Sie dafür in der Systemsteuerung die Cluster-Verwaltung auf und beenden Sie dort den BoFiT Server Dienst!"

Zusätzlich eingebaut ist, dass bei jedem erstellen eines Ordner das Datum und Uhrzeit in Namen mit eingebettet ist.