VBS – zapis ciągu znaków do pliku z jednoczesną jego filtracją.


Fragment kodu, który powstał z potrzeby chwili pod konkretne zastosowanie. Mam własny skrypt który filtruje mi pocztę przychodzącą (głównie przychodzącą, choć wychodząca nie jest pomijana) z tego co ja sam uznaje za spam. Na razie jest to filtracja po adresach i temacie wiadomości. Ale już tu widać czasem olbrzymią skuteczność filtru.

Oczywiście serwer pocztowy o którym mowa to MS Exchenge.

Filtr o wszystkim co robi informuje mnie poprzez loga. No i wszystko działało pięknie aż do momentu kiedy nie pojawiły się maile pisane cyrylicą. Szybka analiza problemu wskazała, że skrypt “wysypuje” się przy zapisie do loga tekstu pisanego cyrylicą. Ponieważ ciągle brak mi czasu na szybko dodałem kawałek kodu, który na dysk zapisuje tylko znaki ASCII do 128 znaku, pozostałe znaki zamienia na spacje. Wprawdzie tracę w ten sposób również polskie znaki diakrytyczne ale w logu mi to nie przeszkadza za to filtr znowu podjął swoją walkę ze spamem.

Ponieważ to tylko fragment kodu więc zakładam, że każdy wie jak otworzyć plik do zapisu.

for i=1 to len(txt)             'zakładam że w zmiennej txt jest tekst do przefiltrowania 
   con = Asc(mid(txt,i,1))      ' wycinamy kolejne znaki i konwertujemy do liczby
  if con > 128 or con < 40 Then ' znaki ASCII większe od 128 lub mniejsze od 40 
     file.Write " "             ' zastępujemy spacją
  else
     file.Write chr(con)        ' nie spełniające warunku zapisujemy jako znak
  end if
next

Dodaj komentarz