VBS Suchen und ersetzen
timmy
- sonstiges
0 Sebastian M. E.0 timmy0 timmy0 Sebastian M. E.0 timmy
Ich habe folgendes script:
***********************************
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Name = FSO.OpenTextFile("C:\Dokumente und Einstellungen\T. Hintermann\Desktop\bla\text1.txt")
Set Name2=FSO.CreateTextFile("C:\Dokumente und Einstellungen\T. Hintermann\Desktop\bla\text2.txt")
do until Name.AtEndOfStream
line=Name.readLine
If InStr(line, "insured") Then
line = Replace(line, "insured", "")
End If
Name2.writeLine line
loop
Name.close
Name2.close
************************************************
das script suche mit in text 1 zeile für zeile nach insured. wenn es das gefunden hat schreibt er in diesem fall nichts in die zeile, es entsteht dann sozusagen eine lücke. wie kann ich das übergehen, dass er sozusagen die zeile löscht?
Moin moin allerseits,
' ***********************************
do until Name.AtEndOfStream
line=Name.readLine
If InStr(line, "insured") = False Then
Name2.writeLine line
End If
loop
' ************************************************
Des müsste gehen.
So weit, MfGrüßen,
Sebastian
Des müsste gehen.
So weit, MfGrüßen,
Sebastian
Hallo,
vielen Dank für die Antwort. Es funktioniert. Super!
Gruss Timmy
Leider kann man hier nicht beliebig viele Kriterien dranhängen. Also z.b. nach fünf verschiedenen Sachen suchen...
Moin moin allerseits,
Leider kann man hier nicht beliebig viele Kriterien dranhängen. Also z.b. nach fünf verschiedenen Sachen suchen...
Quatsch ...
Z.B.:
' ***********************************
do until Name.AtEndOfStream
line=Name.readLine
If InStr(line, "erst") = False Or InStr(line, "suchen") = False Or InStr(line, "dann") = False Or InStr(line, "fragen") = False Then
Name2.writeLine line
End If
loop
' ************************************************
So weit, MfGrüßen,
Sebastian
das geht eben leider nicht, das hab ich schon probiert
ich kriege als output genau die gleiche datei, nur mit anderem Namen...
Moin moin allerseits,
Hast ja Recht ...
' ***********************************
do until Name.AtEndOfStream
line=Name.readLine
If InStr(line, "erst") = False And InStr(line, "suchen") = False And InStr(line, "dann") = False And InStr(line, "fragen") = False Then
Name2.writeLine line
End If
loop
' ************************************************
So weit, MfGrüßen,
Sebastian
Hell-O!
das geht eben leider nicht, das hab ich schon probiert
ich kriege als output genau die gleiche datei, nur mit anderem Namen...
Es kommt auf deine Bedingungen an. Generell gilt: Eine mit "ODER" verknüpfte Bedingung ist wahr, wenn wenigstens eine der Teilbedingungen wahr ist. Der Code lautete:
IF
InStr(line, "erst") = False OR
InStr(line, "suchen") = False OR
InStr(line, "dann") = False OR
InStr(line, "fragen") = False
THEN
Jetzt nimm dir einen beliebigen String und wende oben stehende Abfrage an. Nur wenn keines dieser Wort vorkommt, ist die Bedingung erfüllt. Eventuell benötigst du einen anderen Vergleichswert, einen anderen Vergleichsoperator oder einen anderen logischen Operator. Dies kann dir jedoch niemand ohne Kenntnis deiner Bedingungen sagen.
Siechfred
Es kommt auf deine Bedingungen an. Generell gilt: Eine mit "ODER" verknüpfte Bedingung ist wahr, wenn wenigstens eine der Teilbedingungen wahr ist. Der Code lautete:
IF
InStr(line, "erst") = False OR
InStr(line, "suchen") = False OR
InStr(line, "dann") = False OR
InStr(line, "fragen") = False
THEN
Das ist Grundsätzlich das gleiche wie von Sebastian M. E. gepostet nur anders dargestellt. Mit logischen Verknüpfungen kenn ich mich auch einigermassen aus. Aber danke trotzdem nochmals für die mühe.
ein Beispiel:
1
2
3
5
6
9
3
5
6
8
1
Er soll nun überall wo 1, 3 oder 5 ist die linie Nicht ins neue Dokument schreiben. Das wäre Grundsätzlich eine ODER Verknüpfung, jedoch funktioniert die nicht mit einer If Schlaufe.
Er soll nun überall wo 1, 3 oder 5 ist die linie Nicht ins neue Dokument schreiben. Das wäre Grundsätzlich eine ODER Verknüpfung, jedoch funktioniert die nicht mit einer If Schlaufe.
Klar tut sie das:
IF
InStr(line, "1") > 0 OR
InStr(line, "3") > 0 OR
InStr(line, "5") > 0
THEN
Deswegen schrob ich ja, dass man dein Vorhaben auf verschiedenen Wegen umsetzen kann, ich habe jetzt einfach den Vergleichswert und den Vergleichsoperator geändert, andere Varianten wären ebenso denkbar. Eine hervorragende Anlaufstelle für VB(S) ist übrigens das MSDN.
Siechfred