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-Key: 276763

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

Printed on: April 25, 2024 at 12:04 o'clock

Mitglied: 114757
Solution 114757 Jul 08, 2015 updated at 18:05:41 (UTC)
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
Member: aletri
aletri Jul 08, 2015 at 17:48:24 (UTC)
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
Mitglied: 114757
114757 Jul 08, 2015 updated at 17:53:57 (UTC)
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
Member: aletri
aletri Jul 08, 2015 at 18:00:14 (UTC)
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
Member: aletri
aletri Jul 08, 2015 at 18:01:02 (UTC)
Goto Top
Im Cockpit (Holzklasse¨¨¨)
Mitglied: 114757
114757 Jul 08, 2015 at 18:04:42 (UTC)
Goto Top
korrigiert ...
Member: aletri
aletri Jul 09, 2015 at 06:54:54 (UTC)
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!
Mitglied: 114757
114757 Jul 09, 2015 updated at 07:50:54 (UTC)
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 ...
Member: aletri
aletri Jul 09, 2015 at 08:14:04 (UTC)
Goto Top
????
Schau mal ganz am Anfang meiner Frage da wo
steht "Guten Abend allerseits.....2. Absatz !!!
Mitglied: 114757
114757 Jul 09, 2015 updated at 08:16:47 (UTC)
Goto Top
Da sprichst du von einer Datei, nicht von einem Ordner ... aber ist ja jetzt geklärt.