viper80
Goto Top

Brauche Unterztützung bei einen VB Script das prüft ob eine Datei vorhanden ist und gegebenfalls umnennt.

Hallo,
ich komme mit meinen VB Script nicht mehr weiter. Das Script soll überprüfen ob im Pfad %Userprofile%\Lokale Einstellungen\Anwendungsdaten\Lotus\Notes\Data eine *.id Datei befindet. Wenn dies der Fall ist, soll im Ordner %Homedrive%\Programme\lotus\notes die Datei "Notes.ini" in "Notes.ini.old" umnennen.
Alles unter Windows XP SP2.

Kann mir hier jemand weiterhelfen. Danke

Soweit bin ich schon gekommen.
' 1. Wo befindet sich die *.id Datei? => Sub id:  
'    C:\Dokumente und Einstellungen\%Username%\Lokale Einstellungen\Anwendungsdaten\Lotus\Notes\Data  
'    Möglichkeiten:  
'	 A) Die Datei *.id befindet sich im o.g. Verzeichnis => Sub ini  
'    B) Die Datei *.id befindet sich nicht im o.g. Verzeichnis => Sub Exit  
'  
'  
'  

On Error Resume Next
'============================================================================================  
' Deklarationsteil Globale Variablen  
'============================================================================================  
Set oShell = CreateObject("Wscript.Shell")  
strUserProfile = oShell.ExpandEnvironmentStrings("%Userprofile%")  
strHomedrive = oShell.ExpandEnvironmentStrings("%Homedrive%")  
'============================================================================================  
' Sub id  
'============================================================================================  

Sub id()
Dim vartargetdata      'ID file  
	FulltextSearch ""+strUserProfile+"\Lokale Einstellungen\Anwendungsdaten\Lotus\Notes\Data", "*.id", targetdata  
		If vartargetdata = "*.id" Then   
			call ini()
		Else
			call benden()
		End If
end sub

'============================================================================================  
' Sub ini  
'============================================================================================  

Sub ini()
Dim vartargetdata    'inifile   
	FulltextSearch ""+strHomedrive+"\Programme\Lotus\Notes", "notes.ini", targetdata  
	If  vartargetdata = "notes.ini" Then  
		Set objFSO = CreateObject("Scripting.FileSystemObject")  
		objFSO.MoveFile ""+strHomedrive+"\Programme\Lotus\Notes\notes.ini" , ""+strHomedrive+"\Programme\Lotus\Notes\notes.ini.old"  
	Else
		call benden()
	End If 
end sub

'============================================================================================  
' Sub Exit  
'============================================================================================  

Sub benden()

end sub


Gruß
Thomas

[Edit Biber] Muss das denn sein, dass er "gegebenenfalls umnennt"??
WTF ist an dem Wort "um-be-nen-nen" den so schwierig? [/Edit]

Content-ID: 92197

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

bastla
bastla 16.07.2008 um 16:24:00 Uhr
Goto Top
Hallo viper80!

Etwas eingedampft (und ungetestet) könnte das etwa so aussehen:
Set oFSO = CreateObject("Scripting.FileSystemObject")  
Set oShell = CreateObject("WScript.Shell")   
strUserProfile = oShell.ExpandEnvironmentStrings("%Userprofile%")   
strHomedrive = oShell.ExpandEnvironmentStrings("%Homedrive%")  

strDataPath = strUserProfile & "\Lokale Einstellungen\Anwendungsdaten\Lotus\Notes\Data"  
strDataPattern = ".id"  

strIniPath = strHomedrive & "\Programme\Lotus\Notes"  
strIniFile = "notes.ini"  
strIniOld = "notes.ini.old"  

If FulltextSearch(strDataPath, strDataPattern) <> "" Then  
	Ini
Else
	Beenden
End If
'-- Ende Hauptprogramm --  

Sub Ini
If FulltextSearch(strIniPath, strIniFile) <> "" Then  
    If oFSO.FileExists strIniPath & "\" & strIniOld Then objFSO.DeleteFile strIniPath & "\" & strIniOld  
    oFSO.MoveFile strIniPath & "\" & strIniFile, strIniPath & "\" & strIniOld  
End Sub

Sub Beenden

End Sub

Function FulltextSearch(strPath, strPattern)
F = ""  
L = Len(strPattern)
P = LCase(strPattern)
If oFSO.FolderExists(strPath) Then
    For Each File In oFSO.GetFolder(strPath).Files
        If LCase(Right(File.Name, L)) = P Then
            F = File.Name
            Exit For
        End If
    Next
End If
FulltextSearch = F
End Function
Die Function "FulltextSearch" (warum auch immer sie so heißen soll) liefert den Namen der ersten Datei des als Argument übergebenen Ordners, welche dem Suchmuster (vom Dateiende aus betrachtet) entspricht (gefunden würde dadurch allerdings etwa auch eine "#notes.ini" - allerdings lässt sich die Function natürlich noch entsprechend erweitern, um Suche nach Einzeldatei oder nach Dateien eines bestimmten Typs unterscheiden zu können).

Grüße
bastla

P.S.: In Deinem Entwurf wird das Sub "Id" nicht aufgerufen und daher auch nicht ausgeführt.
viper80
viper80 17.07.2008 um 10:01:20 Uhr
Goto Top
Hallo Bastla,

Vielen dank Nochmal für die Schnelle Antwort.

Gruß
Thomas