Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inhalt einer Datei verändern und hinzufügen

Frage Entwicklung

Mitglied: IsoldeBaden

IsoldeBaden (Level 1) - Jetzt verbinden

20.12.2007, aktualisiert 18.10.2012, 5398 Aufrufe, 4 Kommentare

am besten in Form einer Batch-Datei oder VBS

Hallo,

ich hab folgendes Anliegen.
Ich habe dateien, in denen der Inhalt angepasst werden muss. Am liebsten wäre mir eine Batch oder VBS-Lösung.

Folgendes soll die Batch-Datei können:

Inhalt der Datei soll mit Zeilen von mir ersetzt werden. Evtl. auch sollen auch Zeilen ersetzt werden, falls sie schon vorhanden sind.

Könnt ihr mir bitte eine Vorlage zeigen?

Danke
Isolde
Mitglied: gemini
20.12.2007 um 16:18 Uhr
Hallo Isolde,

Inhalt der Datei soll mit Zeilen von mir ersetzt werden. Evtl. auch sollen auch Zeilen ersetzt werden, falls sie schon vorhanden sind.
Kannst du das etwas mehr spezifizieren?
Wie kann das Script die zu ersetzenden Zeilen erkennen? Ist es immer Zeile 18 oder beinhaltet sie einen best., immer gleichlautenden Text?

Könnt ihr mir bitte eine Vorlage zeigen?
Eine Vorlage (VBS), die EINE Datei öffnet und darin Zeilen mit einem bestimmten Zeilenanfang mit Daten aus einer anderen Datei editiert hätte ich parat. Die schreibt sogar noch ein Log. Müsstest dir halt für deine Bedürfnisse umbauen.

HTH,
gemini
Bitte warten ..
Mitglied: IsoldeBaden
20.12.2007 um 16:25 Uhr
Hallo Gemini,

danke für deine schnelle Antwort.

Der Inhalt der ersetzt werden soll, hat immer den gleichlautenden text.

Könntest du mir deine Vorlage (VBS) zur Verfügung stellen? Wäre sehr nett!

Danke
Bitte warten ..
Mitglied: pacobay
21.12.2007, aktualisiert 18.10.2012
Hallo Isolde,
du hast Glück weil gerade Opferfest und X-Mas ist
und weil ich gerade in einem anderen etwas umfangreicheren Thread
Code verfasst habe, der sich sehr leicht und schnell auf Deine Bedürfnisse anpassen ließ.
Naja, auf die Bedürfnisse wie ich Sie verstanden habe.
Kann ja auch sein, dass ich da falsch liege.

Im Prinzip ist der Code in Richtung "Mit Kanonen auf Spatzen"
Aber er war halt da und es war einfacher für mich das Bestehende anzupassen
als irgendwas Neues zu schreiben.

Alles Weitere im Code

merry x-mas & happy new year
pacobay


01.
' VB Script Document 
02.
'Erstellt als helptesk 4 Thread 
03.
'http://www.administrator.de/Inhalt_einer_Datei_ver%C3%A4ndern_und_hinzuf%C3%BCgen.html 
04.
'beruht auf: 
05.
'http://www.administrator.de/Preislisten_umwandeln.html 
06.
'ergänzender Tread 
07.
' http://www.administrator.de/forum/doppelte-leerstellen-innerhalb-einem-string-entfernen-vbs-76371.html 
08.
 
09.
' for          : WSH/wcript.exe 
10.
' testet on    : XPP SP2 / WSH 5.7 für XP 
11.
12.
' Name of File : textErsetzenV02.vbs 
13.
' Last edit    : 21.12.2007 15:06:20 
14.
' Last editor  : pacobay 
15.
16.
'   TARGET: 
17.
'	Umwandlung des Inhaltes einer Textdatei 
18.
'   fester Suchstring festgelegter Ersatz 
19.
 
20.
' Beispiel: 
21.
' Aus den Zeilen in dem InputFile : 
22.
'      Franz jagt im Auto (einem komplett verwahrlosten Auto) quer durch Bayern. 
23.
'      Franz jagt im AutO (einem komplett verwahrlosten AUto) quer durch Bayern. 
24.
'      Franz jagt im AUTO (einem komplett verwahrlosten AUTo) quer durch Bayern. 
25.
'      Franz jagt im AUTO (einem komplett verwahrlosten auto) quer durch Bayern. 
26.
27.
' wird immer immer in dem OutputFile 
28.
'      Franz jagt im Taxi (einem komplett verwahrlosten Taxi) quer durch Bayern. 
29.
'      Franz jagt im Taxi (einem komplett verwahrlosten Taxi) quer durch Bayern. 
30.
' etc 
31.
32.
'   notwendige Laufumgebungsspezifische Anpassungen in zwei Abschnitten nötig 
33.
 
34.
' Die Abschnitte sind im Code einfach zu finden durch Suche nach XXXXXX 
35.
36.
' Im Abschnitt 01 ist entsprechend anzupassen: 
37.
' (Pfad&Dateiname) Input/Output Files 
38.
39.
' Im Abschnitt 02 ist entsprechend anzupassen: 
40.
' Suchmuster   und Ersatzmuster (im Beispiel "Auto" und "Taxi") 
41.
42.
43.
' Ablauf 
44.
'       Prüft ob Inputfile gefunden werden kann 
45.
'       ifnot Abbruch 
46.
'       ifyes weiter 
47.
48.
' Prüft ob Outputfile schon vorhanden 
49.
'       if yes Abfrage ob gelöscht werden kann 
50.
'    i         if yes dann löschen und weiter 
51.
'              if not Abbruch 
52.
' if Not einfach weiter 
53.
'  
54.
' Zeilenweises auslesen der Inputdatei 
55.
'              ersetzen gemäß Vorgaben (Suchmuster durch ErsatzMuster) 
56.
'              wegschreiben der neuen Zeile (OutDS)in das OutputFile 
57.
' wenn alle Zeilen gelesen dann ich habe fertig 
58.
59.
'********************************************************************* 
60.
61.
Option Explicit 
62.
63.
'Deklaration der Objekte 
64.
Dim WshShell 
65.
Set WshShell = Wscript.CreateObject("Wscript.Shell") 
66.
'--------------------------- 
67.
Dim FSO, FileIn, FileOut 
68.
Set FSO = CreateObject("Scripting.FileSystemObject") 
69.
'--------------------------- 
70.
71.
'Ein paar Variablen für meine Art der Popup Messages 
72.
73.
DIM strTITELs		   ' Meldungstitel im Script festgelegt    [InBox & PopUp] 
74.
DIM strMSGs            ' Meldungstexte für Messages                    [PopUp] 
75.
DIM numShowTimeS       ' im Script festgelegte Anzeigezeit in sec      [PopUp] 
76.
DIM numBtnCodeR        ' ReturnCode Wert des geklickten Buttons        [PopUp] 
77.
 
78.
'numBtnCodeR=WshShell.popup(strMSGs,numShowTimeS,strTITELs,1+32+4096) 
79.
 
80.
'--------------------------- 
81.
' XXXXXX ANPASSUNG bitte hier  (Abschnitt01) XXXXXX 
82.
' In diesen Abschnitt(Pfad&Dateiname)ensprechend anpassen 
83.
Const Input        = "C:\just4Test\auto.txt" 
84.
Const Output       = "C:\just4Test\taxi.txt" 
85.
' XXXXXX Ende dieses Anpassungsabschnittes XXXXXX 
86.
 
87.
'--------------------------- 
88.
Dim AZDs                            'Anzahl der verarbeiteten Datensätze 
89.
'--------------------------- 
90.
91.
Dim InDS							'InputDatensatz 
92.
Dim OutDS							'OutputDatensatz 
93.
 
94.
'--------------------------- 
95.
96.
'********************************************************************* 
97.
'Ende der Deklaration 
98.
'********************************************************************* 
99.
 
100.
'Einige Hilfsprozeduren 
101.
102.
' Deklaration für  Funktion Ersetze 
103.
  DIM objRA      
104.
  DIM SuchString, Suchmuster, ErsatzMuster 
105.
 
106.
' XXXXXX ANPASSUNG bitte hier  (Abschnitt02) XXXXXX 
107.
  Suchmuster   = "Auto"    ' Was suchst Du : 
108.
  ErsatzMuster = "Taxi"    ' Wodurch soll es ersetzt werden 
109.
' XXXXXX Ende dieses Anpassungsabschnittes XXXXXX 
110.
111.
112.
Function Ersetze(SuchString,Suchmuster, ErsatzMuster) 
113.
114.
 SET objRA = new RegExp      ' in VBS hier keine explizite Objektzuweisung nötig 
115.
 objRA.pattern = Suchmuster  ' Legt das Suchmuster fest. 
116.
 objRA.Global = True         ' Legt globales Anwenden fest. (alle Autos) 
117.
 objRA.IgnoreCase = True     ' Ignoriert die Schreibweise. (auto,AUto,Auto etc) 
118.
119.
  ' Führe nun die Ersetzung durch und weise es als Funktionswert zu. 
120.
121.
    Ersetze=objRA.Replace(SuchString,ErsatzMuster) 
122.
123.
 End Function 
124.
 
125.
'------------------------------------------------------------------- 
126.
127.
' Noch ein kleiner HilfsSUB um das Ende anzuzeigen 
128.
129.
SUB Fertig 
130.
WScript.Echo "Ich habe fertig!" &Chr(13)&Chr(13)&+_ 
131.
"Anzahl der verarbeiteten Zeilen: "&AzDs 
132.
END SUB 'Fertig 
133.
134.
'------------------------------------------------------------------- 
135.
136.
SUB CheckInFile 
137.
' Püfen ob Inputdatei gefunden werden kann 
138.
' if yes then öffnen als Vorbereitung zur weiteren Verarbeitung 
139.
' If not Info & Abbruch 
140.
141.
If fso.FileExists(Input) then 
142.
   Set FileIn  = FSO.OpenTextFile( Input, 1, true) 
143.
else 
144.
145.
numShowTimeS   = 0 
146.
strTITELs	   ="Input-Fehler" 
147.
strMSGs       =+_ 
148.
"Folgende Datei konnte nicht gefunden werden!" &chr(13)&chr(13)&+_ 
149.
Input &chr(13)&chr(13)&+_ 
150.
"Das Script wird abgebrochen"&chr(13)&chr(13)&chr(9)&"Pls check:"&chr(9)&chr(9)&"Inputfile-Konstante (in the script)"&chr(13)&chr(9)&"or:" &chr(9)&chr(9)&"The Input-File himself" 
151.
152.
WshShell.popup strMSGs,numShowTimeS,strTITELs,16+4096 
153.
154.
Wscript.Quit 
155.
end if 
156.
157.
END SUB 'CheckInFile 
158.
159.
'------------------------------------------------------------------- 
160.
161.
SUB CheckOutFile 
162.
163.
' Prüfen ob Outputdatei bereits vorhanden ist 
164.
' if not weiter mit öffnen der Datei als Vorbereitung zur weiteren Verarbeitung 
165.
166.
' if there then: Abfrage ob diese gelöscht werden kann Optionen: Ok oder Abbruch 
167.
	 'Option: OK 
168.
	 	 ' dann halt löschen und weiter mit 
169.
	 	 ' öffnen der Datei als Vorbereitung zur weiteren Verarbeitung 
170.
171.
	 'Option: Abbrechen 
172.
	 		 'Abbruch 
173.
174.
175.
If fso.FileExists(Output) then 
176.
     numShowTimeS   = 0 
177.
     strTITELs	   ="Check 4 OutputFile" 
178.
     strMSGs       =+_ 
179.
     "Die vorgesehene Output Datei ist bereits vorhanden!" &chr(13)&chr(13)&+_ 
180.
     Output &chr(13)&chr(13)&+_ 
181.
     "Kann die Datei gelöscht werden?"&chr(13)&chr(13)&chr(9)&"OK:"&chr(9)&+_ 
182.
	 chr(9)&"delete and go on"&chr(13)&chr(9)&"Abbrechen:" &chr(9)&"Scriptende" 
183.
184.
numBtnCodeR=WshShell.popup(strMSGs,numShowTimeS,strTITELs,1+32+4096) 
185.
186.
187.
'Auswertung des Geklickten 
188.
189.
         SELECT CASE numBtnCodeR 
190.
                CASE  1  ' OK 
191.
		 	        fso.DeleteFile(Output) 
192.
			        Wscript.sleep 5000  'gibt dem Script etwas Zeit 
193.
 	                Wscript.echo "file should be killed" 
194.
195.
                CASE  2  ' Abbrechen 
196.
         	        Wscript.echo "Abbruch durch Anwender" 
197.
         	        Wscript.Quit 
198.
         END SELECT 
199.
200.
else 
201.
' Na dann gehts einfach weiter 
202.
end if 
203.
204.
'--------------------------- 
205.
206.
' öffnen des Outputfile (FileOut) als Vorbereitung zur weiteren Verarbeitung 
207.
' vgl Const Output 
208.
209.
Set FileOut = fso.OpenTextFile( output,8,true) 
210.
211.
'--------------------------- 
212.
213.
END SUB 'CheckInFile 
214.
215.
'------------------------------------------------------------------- 
216.
'Der eigentliche ArbeitsSUB 
217.
'------------------------------------------------------------------- 
218.
219.
SUB DoTheWork 
220.
'Der InputFile (FileIn) wurde schon unter CheckInFile geöffnet 
221.
222.
' bis InputFile zu Ende ist, immer weiter machen 
223.
' nach loop kommt er hierher zurück: 
224.
Do While Not (FileIn.atEndOfStream) 
225.
 
226.
'eine Zeile lesen und als Datensatz DS verwenden 
227.
   InDS = FileIn.Readline 
228.
'Ersetzen mit Hilfe der Funktion Ersetze & zuweisen in OutDS 
229.
   OutDS= Ersetze(InDS,Suchmuster, ErsatzMuster) 
230.
''Und nun diesen string wegschreiben 
231.
   FileOut.WriteLine(outDS)          'schreibt OutDs in Outputfile 
232.
'_______________ 
233.
'' Noch die Anzahl der abgearbeiteten Zeilen um eins erhöhen 
234.
' Rein zu Statistikzwecken (vgl.: SUB Fertig) 
235.
   AzDs=AZDs+1 
236.
'_______________ 
237.
238.
   loop   'und das ganze für die nächste Input-Zeile von vorne (vgl.: Do while) 
239.
240.
241.
END SUB                 'DoTheWork 
242.
243.
'------------------------------------------------------------------- 
244.
'------------------------------------------------------------------- 
245.
246.
'Ein MainSUB um die einzelnen SUBs aufzurufen 
247.
248.
SUB MAIN 
249.
    CheckInFile 
250.
    CheckOutFile 'Achtung File Out bereits hier geöffnet 
251.
    DoTheWork 
252.
    Fertig 
253.
END SUB 
254.
255.
'******************************************************************* 
256.
257.
               MAIN     'Der letztendliche Aufruf des ganzen Tralala 
258.
259.
'******************************************************************* 
260.
261.
262.
' EOF 
263.
 
Bitte warten ..
Mitglied: Biber
08.01.2008 um 10:19 Uhr
Moin IsoldeBaden,

wie ist denn der Status dieses Threads?
Konnte Dir einer der geposteten Lösungsansätze helfen oder wartest Du noch Alternativen ab?

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...