Jump to content

ini Datei ändern per Script


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

bin in Sachen Script Programmierung ein absoluter Neuling deshalb die Frage:

Ich möchte gerne per Batch Datei in jedem User Verzeichnis eine bestimmte Datei öffne und eine bestimmte Zeile dort in der Datei editieren.

 

Dort gibt es einen Eintrag in der Datei Tempwar=33342, diese Zeile möchte ich dann auf Tempwar=33341 ändern!

 

Kann mir da wer helfen? Bin soweit das ich in jedes Uerverzeichnis komme:

 

for /F %%I in ('dir /ad /b M:\User') do (

copy D:\test.ini M:\User\%%I\all\test.ini

)

pause

 

Ich hoffe es kann mir wer helfen!

 

Mfg & Danke Horst

Link zu diesem Kommentar

So,

 

kurz vor Feierabend noch die Antwort:

 

Option Explicit

dim objFS, objStartFolder, objUserFolder, UserFolder, objTargetFolder
Dim objTargetFile, objFileStream, fileContent, arrLines, strLine

Set objFS = CreateObject("Scripting.FileSystemObject")

Set objStartFolder = objFS.GetFolder("c:\user")

'Die Userordner Meier, Müller...
For Each UserFolder In objStartFolder.SubFolders

'Die Userordner als Objekt holen
set objUserFolder =  objFS.GetFolder(UserFolder.path)

'Den Unterordner All holen
Set objTargetFolder = objFS.GetFolder(objUserFolder.SubFolders.item("all"))
' 	MsgBox objTargetFolder.Path

'Das File holen
Set objTargetFile = objTargetFolder.Files.item("test.ini")	

'Fileinhalt holen
Set objFileStream = objTargetFile.OpenAsTextStream(1)
	fileContent = objFileStream.ReadAll
 	objFileStream.Close


	'Die Änderungen in die Datei schreiben
Set objFileStream = objTargetFile.OpenAsTextStream(2)
	arrLines = Split(fileContent,vbNewLine)

'Schreibe die Zeichen zurück ins File
For Each strLine In arrLines
	'Wenn die Zeile mit tempwar beginnt, ändere sie
  		If (Left(LCase(LTrim(strLine)),7) = "tempwar") Then  
     		strLine = "Tempwar=33341"      		
  		End If
  		'Schreibe Zeile ins File
  		objFileStream.WriteLine strLine
Next	
	objFileStream.Close
Next

Link zu diesem Kommentar
So,

 

kurz vor Feierabend noch die Antwort:

 

Option Explicit
...	
'Schreibe die Zeichen zurück ins File
For Each strLine In arrLines
	'Wenn die Zeile mit tempwar beginnt, ändere sie
  		If (Left(LCase(LTrim(strLine)),7) = "tempwar") Then  
     		strLine = "Tempwar=33341"      		
  		End If
  		'Schreibe Zeile ins File
  		objFileStream.WriteLine strLine
Next	
	objFileStream.Close
Next

 

Hallo woiza,

 

ich bin noch nicht so sattelfest in VBS, daher entschuldige wenn ich falsch liege, aber muß hinter die

If (Left(LCase(LTrim..... End if

nicht noch ein

Exit For

?

Wenn nicht, kannst Du dann erklären warum nicht?

 

Grüße

ReinerS

Link zu diesem Kommentar

Hallo Reiner,

 

nö muss nicht. ;)

 

 

Zur Erklärung:

 

Mit exit for breche ich die weitere Bearbeitung einer for...next oder einer for each...next ab. Das will ich aber ja nicht haben. In der for next wird der im Array arrLines befindliche Dateiinhalt wieder Zeile für Zeile in die Datei geschrieben. Dies ist die einfachste Möglichkeit, eine einzelne Zeile in einer Datei zu editieren. Das if in der Datei untersucht die jeweils aktuelle Zeile darauf, ob sie mit tempwar beginnt. Ist dies der Fall, wird sie geändert.

 

Gruß

 

woiza

Link zu diesem Kommentar
Hi,

 

du solltest schon die Ordner und Pfade im Script mit deiner Umgebung vergleichen. So habe ich z.B. c:\user als Startverzeichnis, weil ich für den Test kein m:\ zur Verfügung hatte.

 

Hallo,

wenn Du die Datei script.txt ansiehst, da habe ich jetzt d:temp reingeschrieben, auch zum testen.

In diesem Verzeichnis steht folgendes drinnen:

D:\Temp\Username\All\test.ini

 

Wenn ich im Script die Messagebox ausgebe zeigt er mir die datei auch an!

 

Warum schreibt er die Einträge in der Datei nicht?

Mfg Horst

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...