Zamiana polskich liter w skryptach Batch, plikach tekstowych, komendach |
|
ArturZgadzaj Nowy
Liczba postów: 1
|
Post: #1
Zamiana polskich liter w skryptach Batch, plikach tekstowych, komendach
Przedstawiam uniwersalną funkcję/skrypt Zamien_polskie_litery do zastosowania w dowolnym skrypcie Batch bez potrzeby zmiany kodowania środowiska, zmiany czcionek, czy używania innego edytora tekstów. Funkcja ta zapewnia pracę na standardowym środowisku, ze standardowymi narzędziami i w taki sam sposób w różnych systemach Windows. Narzędzie to napisałem na własne potrzeby.
Funkcja zamienia lub usuwa polskie litery w zawartości zmiennej podanej w parametrze. Działa w zależności od parametru pomocniczego /TXT lub /CMD pomiędzy oboma środowiskami, czyli tekstowym, a wierszem polecenia. zatem raz może zamienić polskie litery z trybu tekstowego TXT na tryb poleceń CMD, a jeśli potrzebujemy, to odwrotnie, czyli z trybu poleceń CMD na tryb plików tekstowych TXT. Ten pomocniczy parametr /TXT lub /CMD ma tylko wskazywać z jakiego źródła pochodzi tekst, czyli jaki tryb będzie źródłem. Wtedy zamienia na odpowiednio przeciwny. Funkcja może też usuwać polskie litery, czyli zamieniać „ogonki” na odpowiedniki angielskie, np. Ą na A: /ANGT - usuwa polskie litery, gdy źródłem ma być tekst pochodzący z trybu tekstowego, jak pliki TXT, w tym z Batch (BAT) /ANGC - usuwa polskie litery, gdy źródłem ma być tekst pochodzący z trybu wiersza poleceń CMD Funkcję trzeba wkleić do swego skryptu Batch, np. na jego końcu, a wówczas wywołuje się ją podając CALL i etykietę skoku do funkcji, czyli generalnie tak: CALL:Zamien_polskie_litery /TXT nazwa_zmiennej[ Można też ją zapisać jako osobny plik Batch, jako: Zamien_polskie_litery.bat Wtedy wywołanie będzie nieco inne, to znaczy bez dwukropka : po słowie CALL. Poza tym nie trzeba wtedy wklejać całości do własnego skryptu. CALL Zamien_polskie_litery /TXT nazwa_zmiennej Zatem w parametrze podawana jest nazwa zmiennej, a zawartość tej zmiennej funkcja sama sobie pobierze, zaś wynik umieści w tej samej zmiennej, czyli po wykonaniu tej funkcji zawartość tej zmiennej ulegnie zmianie. Funkcja operuje na praktycznie dowolnej liczbie zmiennych (łącznie 256 znaków tego polecenia), przykładowo: CALL:Zamien_polskie_litery /TXT nazwa_zmiennej_1 nazwa_zmiennej_2 nazwa_zmiennej_3 Jeśli użyjemy parametru /CMD do zamiany z trybu komend wiersza poleceń CMD na tryb tekstowy plików tekstowych, np. do eksportu wyników jakiegoś polecenia do plików tekstowych, które potem mają zawierać prawidłowe polskie litery, to najpierw trzeba z takiego polecenia CMD wynik zaimportować do jakiejś zmiennej, gdyż funkcja ta działa tylko na zmiennych. Czyli najpierw przypisujemy wynik z CMD do jakiejś zmiennej, potem wywołujemy funkcję do zamiany polskich liter dla tej zmiennej i po tej zamianie możemy wyeksportować wynik zamiany z tej zmiennej do jakiegoś pliku tekstowego, np. raportu, czy pliku typu LOG. Przykładowo chcemy uzyskać w pliku tekstowym Wykaz_CMD.txt prawidłowy wykaz plików i katalogów z dobrymi polskimi literami, aby nie było krzaczków. Utworzymy ręcznie przykładowy plik lub podfolder z polskimi literami w jakimś folderze. Weźmiemy pierwsze trzy linie wykazu z tego folderu i wczytamy je do numerowanych zmiennych typu wykaz1. Zamienimy znaki i wyeksportujemy prawidłowy wynik do pliku tekstowego Wykaz_TXT.txt Kod: DIR /B>Wykaz_CMD.txt Uwagi techniczne: 1. Funkcja używa zewnętrznej biblioteki CHARLIB.BAT i znajdź ją w Google lub na http://tiny.pl oraz umieść w folderze przeszukiwania Windows %PATH% 2. Funkcja jest odporna, czyli odpowiednio uwzględnia użycie w tekście znaku wykrzyknika ! lub kombinacji znaków ^! oraz ^^! Wymaga to jednak od niej dodatkowych czynności, co jest zwarte w podfunkcjach „znaczniki_transformuj” do zamiany „przed” i przywróceniu „po” Wszelkie wykrzykniki na koniec ustawia zależnie od środowiska, jako typ znaku specjalnego, czyli ^! lub odpowiednio ^^! Poza tym, funkcja usuwa inne wystąpienia znaku daszka ^ (Kod=94) jeśli nie jest on połączony z wykrzyknikiem. Jeśli ktoś zatem użyje w zawartości zmiennej przykładowo ^( lub ^) to będzie musiał sam to przywrócić po wywołaniu funkcji lub zmodyfikować podfunkcje „znaczniki_transformuj”, aby i to uwzględniały. Wystarczy w tym celu tylko w podfunkcji „znaczniki_transformuj_wynik” przed linią zaczynającą się od „if not defined …” wstawić dwa wiersze: Kod: SET "str=%str: (=^(%" Poniżej kod tej funkcji do wklejenia i użycia w dowolnym innym własnym skrypcie lub do zapisania jako osobny plik Batch: Zamien_polskie_litery.bat Kod: @echo off Opracowanie: Artur Zgadzaj 12.05.2015 08:22 |
« Starszy wątek | Nowszy wątek »
Autor: ArturZgadzaj Temat został oceniony na 0 w skali 1-5 gwiazdek. Zebrano 1 głosów. |