hat jemand einen Tipp für mich, wie
ich aus einer grösseren Textdatei
gezielt nur eine Nummer, die immer an
einer ganz bestimmten Stellte steht auslesen
kann und nur diese in eine zweite Datei
schreiben kann ?!
Gruss, Thorsten
'************************************************
' File: Writetxt.vbs (WSH sample in VBScript)
' Author: Günter Born www.borncity.de
'
' Copies the content of a text file and appends
' a new line (source "WSH 2.0 Developer's Guide", MS Press USA)
'************************************************
Option Explicit
Const file1 = "C:\Autoexec.bat" ' our test file
Const file2 = "C:\Autoexec.xx1" ' the output file
' we must define the imode constant,
' because they are unknown to VBScript
Const ForWriting = 2 ' iomode: writing
Dim Text
Dim fso ' object variable
Dim txtStream, txtStreamOut ' TextStream objects
' Creates a FileSystemObject object to access the
' file system.
Set fso = CreateObject("Scripting.FileSystemObject")
' check, whether the file exists
If fso.FileExists(file1) Then
Set txtStream = fso.OpenTextFile(file1) ' open text file
Set txtStreamOut = fso.OpenTextFile(file2, _
ForWriting, true) ' open text file
Do While Not (txtStream.atEndOfStream) ' copy folder content
Text = txtStream.Readline ' read line
IF (Instr (Text, ".... insert your condition here") > 0 ) Then
txtStreamOut.WriteLine (Text) ' write line
End if
Loop
Set txtStream = Nothing ' release objects
Set txtStreamOut = Nothing
WScript.Echo "Text file " & file1 & _
" filtered in " + file2
Else
WScript.Echo "File " & file & " not found."
End if
' End
G. Born
--
______________________________________
Check out the WSH Bazaar at www.borncity.de
"Thorsten Hayer" <in...@cyberarts.de> schrieb im Newsbeitrag
news:um7YVoU1AHA.1396@tkmsftngp05...
das hat mir schon etwas geholfen,
aber noch nicht ganz:
ich habe folgenden Inhalt in einer Textdatei
-------
Kundennummern:
Bauer........: 987455
Huber........:127632
Müller.......: 748221
-------
und die nummern ändern sich ständig,
wie schaffe ich es nun, immer nur die nummer,
die hinter z.b. Huber steht, also nur '127632'
wegzuschreiben ?!
Danke,
Gruss, Thorsten
i=1
v=inputbox("welcher Name?","","Huber........:")
if v="" then wscript.quit
while not bla.atendofstream
a=bla.readline
if instr(a,v)<>0 then fg(a)
wend
msgbox v & " found " & i-1 & " times" & vbcrlf & "Numbers:" & vbcrlf & f
sub fg(fga)
f=f & mid(fga,15) & vbcrlf
i=i+1
end sub
Thorsten
"Thorsten Hayer" <in...@cyberarts.de> schrieb im Newsbeitrag news:#2#9izW1AHA.1620@tkmsftngp05...
Thorsten
"Thorsten Gudera" <Thorste...@gi.anzeiger.net> schrieb im Newsbeitrag news:O9u8YvX1AHA.1400@tkmsftngp05...
...
> Do While Not (txtStream.atEndOfStream) ' copy folder content
> Text = txtStream.Readline ' read line
> IF (Instr (Text, ".... insert your condition here") > 0 ) Then
> txtStreamOut.WriteLine (Text) ' write line
> End if
> Loop
wenn ich hier ein einzelnes Zeichen nehme, dann geht es, aber wenn ich ein
Wort nehme nicht. Kann Instr nur auf ein einzelnes Zeichen vergleichen?
Wenn ich ein Logfile durchsuche und nur "P" angebe findet er die Zeile mit
"Prozessor" und viele andere. Gebe ich aber "Prozessor" an, dann findet er
nichts. Was ist denn da los?
Frank
Der Fehler muss bei Dir liegen! Die Syntax lautet:
InStr([Start, ]Zeichenfolge1, Zeichenfolge2[, Vergleich])
Details findest Du in der VBScript-Hilfe. Die Funktion liefert genau das,
was man auch erwartet. Hier ein einfaches Testbeispiel (speichere es in eine
vbs-Datei und führe das Beispiel aus).
Text = "Hallo meine Welt"
Msg = "Suchbegriff für String" & vbCRLF & _
Text & vbCRLF & "eingeben"
Suche = InputBox (Msg, "Search", "")
MsgBox "Text """ & Suche & """ ab Position " & _
Instr (Text, Suche) & " im Text " & vbCRLF & _
"""" & Text & """" & vbCRLF & "gefunden"
Die Anpassung an Dein Problem sollte keine Hürde darstellen. Ach noch ne
Idee: Verwende die Funktion UCase, um Probleme mit Groß-/Kleinschreibung
auszuschließen!!!!
Gruss
G. Born
>
> Frank
>
>
"G. Born" <nospam...@web.de> schrieb im Newsbeitrag
news:uSAsuPQ3AHA.1280@tkmsftngp02...
...
> Der Fehler muss bei Dir liegen! Die Syntax lautet:
>
> InStr([Start, ]Zeichenfolge1, Zeichenfolge2[, Vergleich])
>
> Details findest Du in der VBScript-Hilfe.
Hatte ich schon gescheut, bin aber nicht so recht fündig geworden. Ich hatte
dort entnommen, dass immer nur ein Zeichen geht :-(
>Die Funktion liefert genau das,
> was man auch erwartet. Hier ein einfaches Testbeispiel (speichere es in
eine
> vbs-Datei und führe das Beispiel aus).
>
> Text = "Hallo meine Welt"
> Msg = "Suchbegriff für String" & vbCRLF & _
> Text & vbCRLF & "eingeben"
>
> Suche = InputBox (Msg, "Search", "")
>
> MsgBox "Text """ & Suche & """ ab Position " & _
> Instr (Text, Suche) & " im Text " & vbCRLF & _
> """" & Text & """" & vbCRLF & "gefunden"
>
mache ich doch gleich :-))
>
> Die Anpassung an Dein Problem sollte keine Hürde darstellen. Ach noch ne
> Idee: Verwende die Funktion UCase, um Probleme mit Groß-/Kleinschreibung
> auszuschließen!!!!
>
Danke für den Tip
> Gruss
>
> G. Born
> >
> > Frank
Danke für die Hilfestellung
Frank
"G. Born" <nospam...@web.de> schrieb im Newsbeitrag
news:uSAsuPQ3AHA.1280@tkmsftngp02...
>
> Der Fehler muss bei Dir liegen! Die Syntax lautet:
>
> InStr([Start, ]Zeichenfolge1, Zeichenfolge2[, Vergleich])
>
> Details findest Du in der VBScript-Hilfe. Die Funktion liefert genau das,
> was man auch erwartet. Hier ein einfaches Testbeispiel (speichere es in
eine
> vbs-Datei und führe das Beispiel aus).
>
> Text = "Hallo meine Welt"
> Msg = "Suchbegriff für String" & vbCRLF & _
> Text & vbCRLF & "eingeben"
>
> Suche = InputBox (Msg, "Search", "")
>
> MsgBox "Text """ & Suche & """ ab Position " & _
> Instr (Text, Suche) & " im Text " & vbCRLF & _
> """" & Text & """" & vbCRLF & "gefunden"
>
>
> Die Anpassung an Dein Problem sollte keine Hürde darstellen. Ach noch ne
> Idee: Verwende die Funktion UCase, um Probleme mit Groß-/Kleinschreibung
> auszuschließen!!!!
>
> Gruss
>
> G. Born
Hat mit dem Sample geklappt. Mit dessen Hilfe bin ich auch dahinter
gekommen, aus welcher Ecke das Problem kommt.
Eine mit EDIT erstellte Datei funktioniert. Ich möchte aber das Logfile von
Winmsd / MSInfo32 auslesen und die interessanten Zeilen Filtern. Das ist
wohl Windows Text und scheint sich anders zu verhalten. Wie kann man das
Problem umgehen? Alle 200 Files nacheinander mit Edit Öffnen und neu
speichern ? :-((
Frank
[InStr-Syntax]
> Hat mit dem Sample geklappt. Mit dessen Hilfe bin ich auch dahinter
> gekommen, aus welcher Ecke das Problem kommt.
> Eine mit EDIT erstellte Datei funktioniert. Ich möchte aber das
Logfile von
> Winmsd / MSInfo32 auslesen und die interessanten Zeilen Filtern. Das
ist
> wohl Windows Text und scheint sich anders zu verhalten. Wie kann man
das
> Problem umgehen? Alle 200 Files nacheinander mit Edit Öffnen und neu
> speichern ? :-((
Warum nimmst du "EDIT" als Editor? Das verwendet einen anderen
Zeichensatz (AFAIK Codepage 850 oder "MS-Latin-1") als Windows
und die meisten Windows-Editoren. Damit sind Fehler
vorprogrammiert.
Statt alle Logdateien ins DOS-Format zu konvertieren, wäre es
mglweise günstig, Dein VB-Script in einem ANSI-Editor zu
bearbeiten und so gesuchte und zu durchsuchende String(s) ins
gleiche Format zu bekommen.
Es gibt aber auch Konvertierungsroutinen von DOS nach Windows und
umgekehrt. Mit VBS:
----------------- --------------------- ----------- -------------
'Wandelt die deutschen Sonderzeichen üÜ äÄ öÖ ß
'von Windows - in DOS-Format um
Option Explicit
Dim oWshShell, oFso, oArgs, D, DName, newDName, newD
Dim P, Q , I , R
Set oWshShell = CreateObject("WScript.Shell")
Set oFso = CreateObject ("Scripting.FileSystemObject")
Set oArgs = WScript.Arguments
If oArgs.Count = 0 Then LeaveMeNow _
"Skript nur mit Verzeichnis-Angabe aufrufen !"
Dname = oArgs(0)
If not oFso.FileExists(Dname) Then LeaveMeNow _
"Datei "&Dname&" existiert nicht"
Set D = oFso.OpenTextFile(Dname)
On Error Resume Next
I = ToASCII(D.ReadAll)
'I = ToANSI(D.ReadAll) 'für Rückkovertierung
If not err.Number=0 Then LeaveMeNow _
"Fehler beim Lesen der Datei: "&Dname
D.close
P= InstrRev(DName, "\") 'P,Q,R für neuen Dateinamen
Q = Left(DName,P) 'Hole Datei-Pfad
R = Mid(DName,P+1)'Hole Datei-Name
newDName=Q&"New_"&R '** generiere neuen Namen **
Set newD = oFso.CreateTextFile(newDName,true)
newD.write (I)
newD.close
oWshShell.run "%comspec% /c edit.com "&newDName,1,false
'oWshShell.run "notepad.exe "&newDName,1,false
Sub LeaveMeNow (msg)
oWshShell.Popup msg,5,"Fehler !", vbExclamation
Wscript.quit
End Sub
'Konvertierung von Windows -> DOS
function ToASCII(X)
ToASCII = Replace(X, chr(228), chr(132))'ä
ToASCII = Replace(ToASCII, chr(252), chr(129))'ü
ToASCII = Replace(ToASCII, Chr(196), chr(142))'Ä
ToASCII = Replace(ToASCII, Chr(220), chr(154))'Ü
ToASCII = Replace(ToASCII, Chr(214), chr(153))'Ö
ToASCII = Replace(ToASCII, Chr(246), chr(148))'ö
ToASCII = Replace(ToASCII, Chr(223), chr(225))'ß
end Function
'Konvertierung DOS -> Windows
function ToANSI(X)
ToANSI = Replace(X, chr(132), chr(228))
ToANSI = Replace(ToANSI, chr(129), chr(252))
ToANSI = Replace(ToANSI, chr(142), Chr(196))
ToANSI = Replace(ToANSI, chr(154), Chr(220))
ToANSI = Replace(ToANSI, chr(153), Chr(214))
ToANSI = Replace(ToANSI, chr(148), Chr(246))
ToANSI = Replace(ToANSI, chr(225), Chr(223))
end Function
-------------------- ------------------ --------------------- -------
Mfg
Christoph
>Es gibt aber auch Konvertierungsroutinen von DOS nach Windows und
>umgekehrt. Mit VBS:
Sieht nicht schlecht aus, übersetzt aber natürlich nur die
wichtigsten Zeichen. Für eine vollständige Konvertierung
kann man die APIs OEMtoChar bzw. ChartoOEM in ein
Control packen und dann mit einem Script darauf zugreifen.
Ich hab das neulich mal gemacht. Ist noch Beta und mit
beträchtlichem Overhead an anderen Funktionen, dafür
mit funktionsfähigem Beispielscript und ausführlichem
Readme.
http://home.t-online.de/home/micha-wr/hamster/files/beta-HeaderTools.zip
Manfred
"Manfred Polak" <ma...@gmx.de> schrieb
Ja, das ist natürlich vollständiger.
Für die "DOS2WIN.vbs" hätte ich einen Verbesserungvorschlag:
In der If-Abfrage ("Datei ersetzen") könnte man:
NeuDatei = pfad & "\" & name & "-ANSI." & ext
durch
NeuDatei = fs.buildpath (pfad,Name &"-ANSI." &ext)
ersetzen. Wenn man Dateien eines Root-Verzeichnisses wählt, kommt es
sonst zu einem Fehler, wg der 2 "\\".
Habe mit der Autoexec getestet, deshalb ist es mir aufgefallen.
Ausserdem würde ich args.count=0 abfangen, wegen der
Fehlermeldung beim Aufruf ohne Parameter.
Sonst find ichs ziemlich gut, obwohl ich ein paar Sachen nicht ganz
verstanden hab, vor allem wozu man sie nutzen kann.
Liegt wohl daran, dass ich mit API-Aufrufen nicht so auskenne.
Kann man so Sachen (Forms und Active-X-Controls) eigentlich
mit VB5-CCE machen ?
Mfg
Christoph
"Manfred Polak" <ma...@gmx.de> schrieb im Newsbeitrag
news:17-05-01.00-49...@polak.ddns.org...
> Christoph Basedau schrieb:
>
>
> Sieht nicht schlecht aus, übersetzt aber natürlich nur die
> wichtigsten Zeichen. Für eine vollständige Konvertierung
> kann man die APIs OEMtoChar bzw. ChartoOEM in ein
> Control packen und dann mit einem Script darauf zugreifen.
>
> Ich hab das neulich mal gemacht. Ist noch Beta und mit
> beträchtlichem Overhead an anderen Funktionen, dafür
> mit funktionsfähigem Beispielscript und ausführlichem
> Readme.
> http://home.t-online.de/home/micha-wr/hamster/files/beta-HeaderTools.zip
>
> Manfred
danke. Ich habe es gerade herunter geladen und werde es mal anschauen. Ich
kann aber irgendwie nicht glauben, dass ein derartiger Aufwand nötig ist um
ein simples Logfile auseinader zu pflücken.
Frank
danke für das Muster, das könnte demnächst nützlich sein.
Hast du das Thema mal komplett gelesen? EDIT habe ich nur benutzt um eine
Beispieldatei zu haben, da ich mit Windows Textdateien ein Problem habe.
Ich habe in einem Ordner ca. 200 Logfiles (von W2K mit msinfo32 erzeugt)
Nun wollte ich aus diesen Recht umfangreichen Dokumenten einzelne Zeilen
rausziehen und in neue Dateien schreiben um die Sache übersichtlicher zu
machen.
Angefangen habe ich z.B. mit der Zeile, wo das Wort Prozessor vorkommt.
Glücklicherweise kam zu diesem Zeitpunkt das Sample hier gerade durch mit
dem Instr. Das habe ich auch benutzt, hatte aber den Effekt, dass er nur was
findet, wenn ich exakt 1 Zeichen als Suchstring angebe. D.h. gebe ich den
Buchsteben P an findet er alle Zeilen mit P (natürlich auch die wo Prozessor
vorkommt) und schreibt sie in eine neue Datei. Bingo dachte ich.
Leider ist die Sache allerdings die, dass nichts mehr gefunden wird, wenn
ich Pr , Pro , Prozessor oder anderes suchen lasse :-((
Dann hatte ich mit Edit eine Testdatei erzeugt, wo beginnend mit P über Pr
bis Prozessor Zeilenweise die Begriffe drin sind. Lese ich diese Datei, dann
funktionieren die Scripte wie erwartet. Also habe ich geschlussfolgert, dass
irgendetwas an den Sonderzeichen (Zeilenwechsel Leerzeichen etc) der
Windows-Datei anders ist (Unicode?).
Meine Hoffnung war eigentlich, dass man vielleicht statt readline und
writeline einfach nur andere Befehle braucht oder die Datei mit einem
anderen Befehl öffnen muss und schon geht das einfach. Bis jetzt bin ich
noch relativ ratlos :-((
Frank
...
>
> Warum nimmst du "EDIT" als Editor? Das verwendet einen anderen
> Zeichensatz (AFAIK Codepage 850 oder "MS-Latin-1") als Windows
> und die meisten Windows-Editoren. Damit sind Fehler
> vorprogrammiert.
>
> Statt alle Logdateien ins DOS-Format zu konvertieren, wäre es
> mglweise günstig, Dein VB-Script in einem ANSI-Editor zu
> bearbeiten und so gesuchte und zu durchsuchende String(s) ins
> gleiche Format zu bekommen.
>
> Es gibt aber auch Konvertierungsroutinen von DOS nach Windows und
> umgekehrt. Mit VBS:
...
Ja hört sich verzwickt an. Hast Du es schon Günthers Vorschlag mit
"ucase"
für beide Zeichenfolgen - DateiZeile und Suchwort - versucht?
Wenn das Problem Unicode ist:
Du kannst regeln, ob eine Datei in Unicode geöffnet wird.
Die "OpenAsTextStream"-Methode kennt den Optional-Parameter "Format"
mit "Tristate-Werten"
TristateUseDefault -2 Öffnen der Datei im Format des
Systemstandards.
TristateTrue -1 Öffnen der Datei im Unicode-Format.
TristateFalse 0 Öffnen der Datei im ASCII-Format
Damit kannst Du Konvertierungfehler auschliessen, wenn du
Set txtStream = fso.OpenTextFile(file1,0)
nimmst und dein Script auch "ascii" ist.
Oder hast Du weitere Bedingungen eingebaut, die längere Matches
ausschliest?
Posten des Skripts würde vielleicht Aufklärung bringen.
Mfg
Christoph
"Christoph Basedau" <christop...@gmx.de> schrieb im Newsbeitrag
news:eppg62s3AHA.1916@tkmsftngp07...
>
> Ja hört sich verzwickt an. Hast Du es schon Günthers Vorschlag mit
> "ucase"
Ja. Hielf aber nicht.
> für beide Zeichenfolgen - DateiZeile und Suchwort - versucht?
dito
> Wenn das Problem Unicode ist:
Ich befürchte es :-(
> Du kannst regeln, ob eine Datei in Unicode geöffnet wird.
> Die "OpenAsTextStream"-Methode kennt den Optional-Parameter "Format"
> mit "Tristate-Werten"
>
> TristateUseDefault -2 Öffnen der Datei im Format des
> Systemstandards.
> TristateTrue -1 Öffnen der Datei im Unicode-Format.
> TristateFalse 0 Öffnen der Datei im ASCII-Format
>
> Damit kannst Du Konvertierungfehler auschliessen, wenn du
> Set txtStream = fso.OpenTextFile(file1,0)
> nimmst und dein Script auch "ascii" ist.
Weiss nicht genau. Das Script von Günter nutzt auch nicht Textstream sonder
Textfile
>
> Oder hast Du weitere Bedingungen eingebaut, die längere Matches
> ausschliest?
> Posten des Skripts würde vielleicht Aufklärung bringen.
Ich wollte es vermeiden, jetzt mache ich es aber doch:
Script Anfang --------------------------------------------------
' Von: "G. Born" <nospam...@web.de>
' Betreff: Re: Textdatei gezielt auslesen
' Datum: Samstag, 5. Mai 2001 13:58
' Wandele einfach das folgende Beispiel entsprechend um.
'************************************************
' File: Writetxt.vbs (WSH sample in VBScript)
' Author: Günter Born www.borncity.de
'
' Copies the content of a text file and appends
' a new line (source "WSH 2.0 Developer's Guide", MS Press USA)
'************************************************
Option Explicit
Const file1 = "winmsd.txt" ' our test file HIER HABE ICH DEN
DATEINAMEN EINGESETZT
Const file2 = "testnew.txt" ' the output file HIER HABE ICH DEN
DATEINAMEN EINGESETZT
' we must define the imode constant,
' because they are unknown to VBScript
Const ForWriting = 2 ' iomode: writing
Dim Text
Dim fso ' object variable
Dim txtStream, txtStreamOut ' TextStream objects
DIM Suche ' HIER
HABE ICH EINE SUCHVARIABLE EINGEFÜGT
' Creates a FileSystemObject object to access the
' file system.
Set fso = CreateObject("Scripting.FileSystemObject")
' check, whether the file exists
If fso.FileExists(file1) Then
Set txtStream = fso.OpenTextFile(file1) ' open text file
Set txtStreamOut = fso.OpenTextFile(file2, _
ForWriting, true) ' open text file
Do While Not (txtStream.atEndOfStream) ' copy folder content
Text = txtStream.Readline ' read line
Suche = "Prozessor" ' HIER
SETZE ICH DEN SUCHWERT
' STEHT HIER P IST ALLES OK, SO ABER NICHT
IF (Instr (Text, Suche) > 0 ) Then ' HIER
NUTZE ICH DEN SUCHWERT
txtStreamOut.WriteLine (Text) ' write line
End if
Loop
Set txtStream = Nothing ' release objects
Set txtStreamOut = Nothing
WScript.Echo "Text file " & file1 & _
" filtered in " + file2
Else
WScript.Echo "File " & file & " not found."
End if
' End
Script Ende --------------------------------------------
Mein winmsd.txt file liegz im selben Ordner und sieht derzeit so aus:
(Du solltest es, wenn du Testen möchtest, aber besser auf deinem PC
erstellen, sonst lässt sich wahrscheinlich das Problem nicht reproduzieren
(Start -> msinfo32 -> Vorgang -> als Textdatei speichern))
Beginn winmsd.txt ________________________________
Systeminformationsbericht erstellt am: 23.04.2001 15:31:03
[Systeminformationen]
[ Es folgen Unterkategorien dieser Hauptkategorie. ]
[Systemübersicht]
Element Wert
Betriebssystemname Microsoft Windows 2000 Professional
Version 5.0.2195 Service Pack 1 Build 2195
Betriebssystemhersteller Microsoft Corporation
Systemhersteller System Manufacturer
Systemmodell System Name
Systemtyp X86-basierter PC
Prozessor x86 Family 6 Model 8 Stepping 6 GenuineIntel ~871 MHz
BIOS-Version Award Medallion BIOS v6.0
Windows-Verzeichnis C:\WINNT
Systemverzeichnis C:\WINNT\System32
Startgerät \Device\Harddisk0\Partition1
Gebietsschema Deutschland
Zeitzone Westeuropäische Sommerzeit
Gesamter realer Speicher 261.596 KB
Verfügbarer realer Speicher 133.816 KB
Gesamter virtueller Speicher 895.176 KB
Verfügbarer virtueller Speicher 668.116 KB
Größe der Auslagerungsdatei 633.580 KB
Auslagerungsdatei C:\pagefile.sys
Ende winmsd.txt _________________________________________
Wenn ich als Suchbegriff P eingebe erhalte ich:
B e t r i e b s s y s t e m n a m e M i c r o s o f t W i n d o w s 2
0 0 0 P r o f e s s i o n a l
V e r s i o n 5 . 0 . 2 1 9 5 S e r v i c e P a c k 1 B u i l d
2 1 9 5
S y s t e m t y p X 8 6 - b a s i e r t e r P C
P r o z e s s o r x 8 6 F a m i l y 6 M o d e l 8 S t e p p i n
g 6 G e n u i n e I n t e l ~ 8 7 1 M H z
S t a r t g e r ä t \ D e v i c e \ H a r d d i s k 0 \ P a r t i t i o n
1
Gebe ich als Suchbegriff Prozessor oder PR oder Pro ... an, ist die
Zieldatei leer
Ich hoffe, du hast eine Idee. Ich denke immer noch, dass es vermutlich
irgendeine Kleinigkeit ist, denn solche Sachen wir Logfiles per Script
auslesen, dass machen doch viele und andauernd (denke ich jedenfalls)
Das Originalscript stammt wie erwähnt von G. Born und funktioniert prima,
wenn ich eine Datei winmsd.txt mit edit erzeuge.
Frank
P.S. Hier W2K SP1 (neuerdings auch SP2) IE 5.5 SP1 (war auch schon IE6beta
drauf) , Office2000 SBE.
>danke. Ich habe es gerade herunter geladen und werde es mal anschauen. Ich
>kann aber irgendwie nicht glauben, dass ein derartiger Aufwand nötig ist um
>ein simples Logfile auseinader zu pflücken.
Mein Posting war mehr eine direkte Antwort an Christoph und
bezog sich weniger auf dein Problem mit InStr. Dafür weiß ich
leider auch keine Lösung.
Manfred
>Für die "DOS2WIN.vbs" hätte ich einen Verbesserungvorschlag:
>In der If-Abfrage ("Datei ersetzen") könnte man:
> NeuDatei = pfad & "\" & name & "-ANSI." & ext
>durch
> NeuDatei = fs.buildpath (pfad,Name &"-ANSI." &ext)
>ersetzen.
Gute Idee, wird eingebaut.
>Wenn man Dateien eines Root-Verzeichnisses wählt, kommt es
>sonst zu einem Fehler, wg der 2 "\\".
Hatte ich völlig übersehen.
>Sonst find ichs ziemlich gut, obwohl ich ein paar Sachen nicht ganz
>verstanden hab, vor allem wozu man sie nutzen kann.
Ich hatte ja vor dem Overhead gewarnt... ;-)
Die Sachen mit Agent und Hamster sind natürlich nur verständlich,
wenn man diese Programme benutzt.
>Kann man so Sachen (Forms und Active-X-Controls) eigentlich
>mit VB5-CCE machen ?
Natürlich, ich habe das Ding ja mit der VB5 CCE geschrieben.
Steht auch im Liesmich ganz oben.
Manfred
"Frank Reetz" schrieb:
> hI cHRISTOPH;
> "Christoph Basedau" schrieb:
> > Wenn das Problem Unicode ist:
> Ich befürchte es :-(
[Tristate-Werte]
> Weiss nicht genau. Das Script von Günter nutzt auch nicht Textstream
> sonder Textfile
Da gibts dies Option auch:
Objekt.OpenTextFile(Dateiname[, E/A-Modus[, Erstellen[, Format]]])
Auf meinem Rechner (W98SE) funktioniert Dein Skript mit "Prozessor"
und anderen Suchwerten.
Scheint wohl wirklich an den Zeichensätzen zu liegen - oder
an einer W2000-Besonderheit.
> If fso.FileExists(file1) Then
> Set txtStream = fso.OpenTextFile(file1,ForReading,false,0) ' open
> text file
> Set txtStreamOut = fso.OpenTextFile(file2, _
> ForWriting, true,0) ' open text file
Wenn Du es um diese Zeilen ergänzt/veränderst:
Dim Mode
Const ForReading = 1 , Unicode = -1 , Ascii = 0 , System = -2
If fso.FileExists(file1) Then
'Modus = Ascii 'alle 3 testen
'Modus = Unicode
Modus = System
Set txtStream = fso.OpenTextFile(file1, _
ForReading,false,mode) '"false" _
'sonst wird file1 überschrieben
Set txtStreamOut = fso.OpenTextFile(file2, _
ForWriting, true,mode)
...
Hier hat das Skript z.B mit der Kombinationen
-1 für txtStream und -2 für txtStreamOut,
oder -1 (unicode) für beide nicht funktioniert!
Auf einem W2000-Rechner dürfte es dann schätzungsweise
am besten mit -2 (system) oder -1 (unicode) für beide
funktionieren.
Test's mal aus
Mfg
Christoph
danke für deine geduldige Hilfe. Jetzt klappt es wie gewünscht, so dass ich
mit riesen Schritten weiterkomme. Nun muss ich bloss noch mal in Ruhe alles
anschauen, damit ich es verstehe :-))
Die nächste Aufgabe ist natürlich, dass automatisch alle 200 Datein des
Verezeichnisses durchgeackert werden ...
Also werde ich jetzt mal anfangen Schleifen zu bauen :-))
Frank