aletri
Goto Top

Wenn bestimmte Datei leer dann Script ausfürhen sonst nicht

Guten Abend allerseits

Dieser Script löscht einen bestimmten Eintrag in der Scener.cfg des Flugsimulators und funktioniert soweit:

Nun sollte der Script nur dann ausgeführt werden, wenn eine gewisse Datei nämlich: "C:\Program Files (x86)\Mircosoft Games\Flight Simulator X\Addon Scenery\Italy\ATiLibrary\Scenery" leer ist!


Hier der Script der ohne Bedingung den Eintrag löscht:


 
CfgFilePath = "C:\ProgramData\Microsoft\FSX\Scenery.CFG"  
Dim Record (10000)
ScenTitle = "Title=ATiLibrary"  
EntryNumRows = 7
	
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 fs = Nothing 

Besten Dank für Hilfestellung
aletri

Content-ID: 276763

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

Ausgedruckt am: 24.11.2024 um 08:11 Uhr

114757
Lösung 114757 08.07.2015 aktualisiert um 20:05:41 Uhr
Goto Top
CfgFilePath = "C:\ProgramData\Microsoft\FSX\Scenery.CFG"  
Dim Record (10000)
ScenTitle = "Title=ATiLibrary"  
EntryNumRows = 7
	
Set fs = CreateObject("Scripting.FileSystemObject")   

If (fs.FileExists(CfgFilePath)) then
	Set a = fs.OpenTextFile(CfgFilePath, 1, FALSE) 
	If Not a.AtEndOfStream Then
		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
	End If
	a.Close
End If

Set fs = Nothing 
Wie wärs mal zwischendurch mit VBA lernen, anstatt virtuell durch die Gegend zu fliegen face-wink?

Gruß jodel32
aletri
aletri 08.07.2015 um 19:48:24 Uhr
Goto Top
Hallo jodel32

Hast ja Recht aber ich bin zu viel durch mein (nicht virtuelles) echtes Fliegen unterwegs
und Zeitweise fast nie Zuhause!!

Und Wiederum allerbesten Dank
Beste Grüsse
aletri
114757
114757 08.07.2015 aktualisiert um 19:53:57 Uhr
Goto Top
Zitat von @aletri:
Hast ja Recht aber ich bin zu viel durch mein (nicht virtuelles) echtes Fliegen unterwegs
und Zeitweise fast nie Zuhause!!
Dann hab ich nichts gesagt face-smile Wo fliegst du, auf dem Schleudersitz im Cockpit ganz vorne oder in der Holzklasse ?

Allseits guten Flug.
Gruß jodel
aletri
aletri 08.07.2015 um 20:00:14 Uhr
Goto Top
hallo jodel32

Folgende Fehlermendung:

Zeile: 8
Zeichen : 31
Fehler 'Then' erwartet
Code: 800A03F9
Quelle: Kompilierungsfehler in Micorsoft VBscript

habe das 'Then' probiert einzufügen aber Meldung bleibt die selbe?

Gruss
aletri
aletri
aletri 08.07.2015 um 20:01:02 Uhr
Goto Top
Im Cockpit (Holzklasse¨¨¨)
114757
114757 08.07.2015 um 20:04:42 Uhr
Goto Top
korrigiert ...
aletri
aletri 09.07.2015 um 08:54:54 Uhr
Goto Top
Danke jodel32

Nun wird der Script zwar ausgeführt aber auch dann wenn in "C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\Addon Scenery\Europe\Italy\ATiLibrary\Scenery" ein File vorhanden ist!

Ich hab folgedes probiert....

 
Set FSO = CrateObject ("Scripting.FileSystemObject")  

if FSO.Getfolder("C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\Addon Scenery\Europe\Italy\ATiLibrary\Scenery").Files.Count 0 Then  


CfgFilePath = "C:\ProgramData\Microsoft\FSX\Scenery.CFG"  
Dim Record (10000)
ScenTitle = "Title=ATiLibrary"  
EntryNumRows = 7
	
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 fs = Nothing 
 
End if

aber foldende Fehlermeldung kommt:

Zeile: 3
Zeichen: 147
Fehler: 'Then' erwartet
Code: 800A03F9
Quelle: Kompilierungsfehler in Microsoft VBscript

Habe erfolglos versucht den Fehler zu korrigiern!
114757
114757 09.07.2015 aktualisiert um 09:50:54 Uhr
Goto Top
Zitat von @aletri:

Nun wird der Script zwar ausgeführt aber auch dann wenn in "C:\Program Files (x86)\Microsoft Games\Microsoft Flight
Simulator X\Addon Scenery\Europe\Italy\ATiLibrary\Scenery" ein File vorhanden ist!
Das war ja oben auch nicht deine Frage !!! glaubst du ich bin Hellseher ??
Das obige Skript sollte ja nach deiner Aussage nur ausgeführt werden wenn ein "bestimmtes" File leer ist, und das macht es auch Fehlerfrei !
Dein jetziges Verhalten war nicht Betandteil deiner Frage!

Wenn dann sieht die Zeile so aus
if FSO.Getfolder("C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\Addon Scenery\Europe\Italy\ATiLibrary\Scenery").Files.Count > 0 Then   
Du bist mir schon ein Kauz ...
aletri
aletri 09.07.2015 um 10:14:04 Uhr
Goto Top
????
Schau mal ganz am Anfang meiner Frage da wo
steht "Guten Abend allerseits.....2. Absatz !!!
114757
114757 09.07.2015 aktualisiert um 10:16:47 Uhr
Goto Top
Da sprichst du von einer Datei, nicht von einem Ordner ... aber ist ja jetzt geklärt.