Inhalt einer Datei verändern und hinzufügen
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 76419
Url: https://administrator.de/contentid/76419
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Isolde,
Wie kann das Script die zu ersetzenden Zeilen erkennen? Ist es immer Zeile 18 oder beinhaltet sie einen best., immer gleichlautenden Text?
HTH,
gemini
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
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
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
' VB Script Document
'Erstellt als helptesk 4 Thread
'[content:76419]
'beruht auf:
'[content:76158]
'ergänzender Tread
' [content:76371]
' for : WSH/wcript.exe
' testet on : XPP SP2 / WSH 5.7 für XP
'
' Name of File : textErsetzenV02.vbs
' Last edit : 21.12.2007 15:06:20
' Last editor : pacobay
'
' TARGET:
' Umwandlung des Inhaltes einer Textdatei
' fester Suchstring festgelegter Ersatz
' Beispiel:
' Aus den Zeilen in dem InputFile :
' Franz jagt im Auto (einem komplett verwahrlosten Auto) quer durch Bayern.
' Franz jagt im AutO (einem komplett verwahrlosten AUto) quer durch Bayern.
' Franz jagt im AUTO (einem komplett verwahrlosten AUTo) quer durch Bayern.
' Franz jagt im AUTO (einem komplett verwahrlosten auto) quer durch Bayern.
'
' wird immer immer in dem OutputFile
' Franz jagt im Taxi (einem komplett verwahrlosten Taxi) quer durch Bayern.
' Franz jagt im Taxi (einem komplett verwahrlosten Taxi) quer durch Bayern.
' etc
'
' notwendige Laufumgebungsspezifische Anpassungen in zwei Abschnitten nötig
' Die Abschnitte sind im Code einfach zu finden durch Suche nach XXXXXX
'
' Im Abschnitt 01 ist entsprechend anzupassen:
' (Pfad&Dateiname) Input/Output Files
'
' Im Abschnitt 02 ist entsprechend anzupassen:
' Suchmuster und Ersatzmuster (im Beispiel "Auto" und "Taxi")
'
'
' Ablauf
' Prüft ob Inputfile gefunden werden kann
' ifnot Abbruch
' ifyes weiter
'
' Prüft ob Outputfile schon vorhanden
' if yes Abfrage ob gelöscht werden kann
' i if yes dann löschen und weiter
' if not Abbruch
' if Not einfach weiter
'
' Zeilenweises auslesen der Inputdatei
' ersetzen gemäß Vorgaben (Suchmuster durch ErsatzMuster)
' wegschreiben der neuen Zeile (OutDS)in das OutputFile
' wenn alle Zeilen gelesen dann ich habe fertig
'
'*********************************************************************
'
Option Explicit
'
'Deklaration der Objekte
Dim WshShell
Set WshShell = Wscript.CreateObject("Wscript.Shell")
'---------------------------
Dim FSO, FileIn, FileOut
Set FSO = CreateObject("Scripting.FileSystemObject")
'---------------------------
'
'Ein paar Variablen für meine Art der Popup Messages
'
DIM strTITELs ' Meldungstitel im Script festgelegt [InBox & PopUp]
DIM strMSGs ' Meldungstexte für Messages [PopUp]
DIM numShowTimeS ' im Script festgelegte Anzeigezeit in sec [PopUp]
DIM numBtnCodeR ' ReturnCode Wert des geklickten Buttons [PopUp]
'numBtnCodeR=WshShell.popup(strMSGs,numShowTimeS,strTITELs,1+32+4096)
'---------------------------
' XXXXXX ANPASSUNG bitte hier (Abschnitt01) XXXXXX
' In diesen Abschnitt(Pfad&Dateiname)ensprechend anpassen
Const Input = "C:\just4Test\auto.txt"
Const Output = "C:\just4Test\taxi.txt"
' XXXXXX Ende dieses Anpassungsabschnittes XXXXXX
'---------------------------
Dim AZDs 'Anzahl der verarbeiteten Datensätze
'---------------------------
'
Dim InDS 'InputDatensatz
Dim OutDS 'OutputDatensatz
'---------------------------
'
'*********************************************************************
'Ende der Deklaration
'*********************************************************************
'Einige Hilfsprozeduren
'
' Deklaration für Funktion Ersetze
DIM objRA
DIM SuchString, Suchmuster, ErsatzMuster
' XXXXXX ANPASSUNG bitte hier (Abschnitt02) XXXXXX
Suchmuster = "Auto" ' Was suchst Du :
ErsatzMuster = "Taxi" ' Wodurch soll es ersetzt werden
' XXXXXX Ende dieses Anpassungsabschnittes XXXXXX
'
'
Function Ersetze(SuchString,Suchmuster, ErsatzMuster)
'
SET objRA = new RegExp ' in VBS hier keine explizite Objektzuweisung nötig
objRA.pattern = Suchmuster ' Legt das Suchmuster fest.
objRA.Global = True ' Legt globales Anwenden fest. (alle Autos)
objRA.IgnoreCase = True ' Ignoriert die Schreibweise. (auto,AUto,Auto etc)
'
' Führe nun die Ersetzung durch und weise es als Funktionswert zu.
'
Ersetze=objRA.Replace(SuchString,ErsatzMuster)
'
End Function
'-------------------------------------------------------------------
'
' Noch ein kleiner HilfsSUB um das Ende anzuzeigen
'
SUB Fertig
WScript.Echo "Ich habe fertig!" &Chr(13)&Chr(13)&+_
"Anzahl der verarbeiteten Zeilen: "&AzDs
END SUB 'Fertig
'
'-------------------------------------------------------------------
'
SUB CheckInFile
' Püfen ob Inputdatei gefunden werden kann
' if yes then öffnen als Vorbereitung zur weiteren Verarbeitung
' If not Info & Abbruch
'
If fso.FileExists(Input) then
Set FileIn = FSO.OpenTextFile( Input, 1, true)
else
'
numShowTimeS = 0
strTITELs ="Input-Fehler"
strMSGs =+_
"Folgende Datei konnte nicht gefunden werden!" &chr(13)&chr(13)&+_
Input &chr(13)&chr(13)&+_
"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"
'
WshShell.popup strMSGs,numShowTimeS,strTITELs,16+4096
'
Wscript.Quit
end if
'
END SUB 'CheckInFile
'
'-------------------------------------------------------------------
'
SUB CheckOutFile
'
' Prüfen ob Outputdatei bereits vorhanden ist
' if not weiter mit öffnen der Datei als Vorbereitung zur weiteren Verarbeitung
'
' if there then: Abfrage ob diese gelöscht werden kann Optionen: Ok oder Abbruch
'Option: OK
' dann halt löschen und weiter mit
' öffnen der Datei als Vorbereitung zur weiteren Verarbeitung
'
'Option: Abbrechen
'Abbruch
'
'
If fso.FileExists(Output) then
numShowTimeS = 0
strTITELs ="Check 4 OutputFile"
strMSGs =+_
"Die vorgesehene Output Datei ist bereits vorhanden!" &chr(13)&chr(13)&+_
Output &chr(13)&chr(13)&+_
"Kann die Datei gelöscht werden?"&chr(13)&chr(13)&chr(9)&"OK:"&chr(9)&+_
chr(9)&"delete and go on"&chr(13)&chr(9)&"Abbrechen:" &chr(9)&"Scriptende"
'
numBtnCodeR=WshShell.popup(strMSGs,numShowTimeS,strTITELs,1+32+4096)
'
'
'Auswertung des Geklickten
'
SELECT CASE numBtnCodeR
CASE 1 ' OK
fso.DeleteFile(Output)
Wscript.sleep 5000 'gibt dem Script etwas Zeit
Wscript.echo "file should be killed"
'
CASE 2 ' Abbrechen
Wscript.echo "Abbruch durch Anwender"
Wscript.Quit
END SELECT
'
else
' Na dann gehts einfach weiter
end if
'
'---------------------------
'
' öffnen des Outputfile (FileOut) als Vorbereitung zur weiteren Verarbeitung
' vgl Const Output
'
Set FileOut = fso.OpenTextFile( output,8,true)
'
'---------------------------
'
END SUB 'CheckInFile
'
'-------------------------------------------------------------------
'Der eigentliche ArbeitsSUB
'-------------------------------------------------------------------
'
SUB DoTheWork
'Der InputFile (FileIn) wurde schon unter CheckInFile geöffnet
'
' bis InputFile zu Ende ist, immer weiter machen
' nach loop kommt er hierher zurück:
Do While Not (FileIn.atEndOfStream)
'eine Zeile lesen und als Datensatz DS verwenden
InDS = FileIn.Readline
'Ersetzen mit Hilfe der Funktion Ersetze & zuweisen in OutDS
OutDS= Ersetze(InDS,Suchmuster, ErsatzMuster)
''Und nun diesen string wegschreiben
FileOut.WriteLine(outDS) 'schreibt OutDs in Outputfile
'_______________
'' Noch die Anzahl der abgearbeiteten Zeilen um eins erhöhen
' Rein zu Statistikzwecken (vgl.: SUB Fertig)
AzDs=AZDs+1
'_______________
'
loop 'und das ganze für die nächste Input-Zeile von vorne (vgl.: Do while)
'
'
END SUB 'DoTheWork
'
'-------------------------------------------------------------------
'-------------------------------------------------------------------
'
'Ein MainSUB um die einzelnen SUBs aufzurufen
'
SUB MAIN
CheckInFile
CheckOutFile 'Achtung File Out bereits hier geöffnet
DoTheWork
Fertig
END SUB
'
'*******************************************************************
'
MAIN 'Der letztendliche Aufruf des ganzen Tralala
'
'*******************************************************************
'
'
' EOF