Thread View: pl.comp.ogonki
1 messages
1 total messages
Started by Artur Zgadzaj
Sun, 17 Jan 2016 03:42
Skrypt Batch do zamiany polskich liter z Notatnika na CMD i odwrotnie lub usuwanie polskich liter
Author: Artur Zgadzaj
Date: Sun, 17 Jan 2016 03:42
Date: Sun, 17 Jan 2016 03:42
580 lines
23160 bytes
23160 bytes
Przedstawiam w³asn± uniwersaln± funkcjê 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. 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: /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 z dwukropkiem 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 funkcji wklejaæ 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 DIR /B>Wykaz_CMD.txt ( set /p wykaz1= set /p wykaz2= set /p wykaz3= )< Wykaz_CMD.txt CALL:Zamien_polskie_litery /CMD wykaz1 wykaz2 wykaz3 echo %wykaz1%>Wykaz_TXT.txt echo %wykaz2%>>Wykaz_TXT.txt echo %wykaz3%>>Wykaz_TXT.txt Uwagi techniczne: 1. Funkcja u¿ywa zewnêtrznej biblioteki CHARLIB.BAT i znajd¼ j± w Google lub na https://sites.google.com/site/dbenhamfiles/ 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 ! i nawiasy okr±g³e () 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 ! lub nawiasami (). Je¶li kto¶ zatem u¿yje w zawarto¶ci zmiennej znak ^ w innym specjalnym celu, to bêdzie musia³ sam to przywróciæ po wywo³aniu funkcji lub zmodyfikowaæ podfunkcjê "znaczniki_transformuj_wynik", aby i to uwzglêdnia³y. Poni¿ej kod tej funkcji Zamien_polskie_litery do wklejenia i u¿ycia w dowolnym innym w³asnym skrypcie lub zapisania jako osobny plik Batch. Potem bêd± podane pe³ne przyk³ady u¿ycia w zewnêtrznym kompletnym skrypcie ============================================================================== @echo off :Zamien_polskie_litery - Parametr pierwszy okre¶la typ zamiany: /TXT lub /CMD lub /ANGT lub /ANGC REM Parametry kolejne to nazwy zmiennych: nazwa_zmiennej_1 [ nazwa_zmiennej_2 ... nazwa_zmiennej_60 ] REM /TXT - zamienia z formatu plików tekstowych TXT, w tym Batch (BAT) >>> na tryb poleceñ CMD REM /CMD - zamienia z trybu poleceñ CMD >>> na format plików tekstowych TXT, w tym Batch (BAT) REM Uwaga: trzeba najpierw wczytaæ wynik polecenia CMD do zmiennej i dopiero wtedy podaæ nazwê tej zmiennej REM /ANGT - usuwanie polskich znaków z trybu tekstowego TXT, czyli zamiana na odpowiedniki angielskie (ANG) REM /ANGC - usuwanie polskich znaków z trybu poleceñ CMD, czyli zamiana na odpowiedniki angielskie (ANG) REM Podawaæ tylko nazwy zmiennych, a nie ich warto¶ci, za¶ rezultat zamiany uzyskujemy do tej samej zmiennej REM Ver.1.4 Opracowanie: Artur Zgadzaj (Wroc³aw) artur.zgadzaj(at)wp.pl SET /A LICZ_PL=%RANDOM% * 1000 / 32768 + 1 setlocal set "Rozwijanie=!" setlocal EnableDelayedExpansion SET CMD=165,198,202,163,209,211,140,143,175,185,230,234,179,241,243,156,159,191 SET TXT=164,143,168,157,227,224,151,141,189,165,134,169,136,228,162,152,171,190 SET ANG=65,67,69,76,78,79,83,90,90,97,99,101,108,110,111,115,122,122 SET "Zestaw_1=" if /I "%~1"=="/TXT" SET Zestaw_1=%TXT%&SET Zestaw_2=%CMD%&shift if /I "%~1"=="/CMD" SET Zestaw_1=%CMD%&SET Zestaw_2=%TXT%&shift if /I "%~1"=="/ANGT" SET Zestaw_1=%ANG%&SET Zestaw_2=%CMD%&shift if /I "%~1"=="/ANGC" SET Zestaw_1=%ANG%&SET Zestaw_2=%TXT%&shift if "%Zestaw_1%"=="" (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Bledny pierwszy parametr /CMD lub /TXT lub /ANGT lub /ANGC&TIMEOUT /T 15>nul&exit /b) if "%~1"=="" (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Brak nazwy pierwszej zmiennej zawierajacej tekst&TIMEOUT /T 15>nul&exit /b) if not exist CHARLIB.BAT (FOR /F %%I IN ("CHARLIB.BAT") DO (if "%%~$PATH:I"=="" echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Brak CHARLIB.BAT, znajdz w Google lub na:&echo https://sites.google.com/site/dbenhamfiles&echo.&TIMEOUT /T 60>nul&exit /b)) CALL CHARLIB initLib if exist "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" del "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" :nastepna_zmienna if "%~1"=="" goto koniec_PL if "!%~1!"=="" (shift&if not "%~1"=="" goto nastepna_zmienna) SET /A L=0&SET Wynik= CALL:znaczniki_transformuj "%~1" :kolejny_znak SET Y=!str:~%L%,1!&if "!Y!"=="" goto pomin_kolejny_znak CALL CHARLIB asc str !L! Kod>nul if "%Kod%"=="94" SET "Y=" FOR /F "tokens=1-18 delims=," %%A IN ("!Zestaw_2!") DO ( FOR /F "tokens=1-18 delims=," %%a IN ("!Zestaw_1!") DO ( if %Kod%==%%A CALL CHARLIB chr %%a Y if %Kod%==%%B CALL CHARLIB chr %%b Y if %Kod%==%%C CALL CHARLIB chr %%c Y if %Kod%==%%D CALL CHARLIB chr %%d Y if %Kod%==%%E CALL CHARLIB chr %%e Y if %Kod%==%%F CALL CHARLIB chr %%f Y if %Kod%==%%G CALL CHARLIB chr %%g Y if %Kod%==%%H CALL CHARLIB chr %%h Y if %Kod%==%%I CALL CHARLIB chr %%i Y if %Kod%==%%J CALL CHARLIB chr %%j Y if %Kod%==%%K CALL CHARLIB chr %%k Y if %Kod%==%%L CALL CHARLIB chr %%l Y if %Kod%==%%M CALL CHARLIB chr %%m Y if %Kod%==%%N CALL CHARLIB chr %%n Y if %Kod%==%%O CALL CHARLIB chr %%o Y if %Kod%==%%P CALL CHARLIB chr %%p Y if %Kod%==%%Q CALL CHARLIB chr %%q Y if %Kod%==%%R CALL CHARLIB chr %%r Y )) SET Wynik=!Wynik!!Y!&SET /A L+=1&if not "!str:~%L%,1!"=="" goto kolejny_znak :pomin_kolejny_znak CALL:znaczniki_transformuj_wynik Wynik "%~1" shift&if not "%~1"=="" goto nastepna_zmienna :koniec_PL endlocal endlocal if exist "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" (CALL "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT") else (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Blad wykonania, nie mozna uzyskac wynikow&TIMEOUT /T 60>nul&exit /b) if exist "%TEMP%\%LICZ_PL%_*.BAT" DEL "%TEMP%\%LICZ_PL%_*.BAT" SET "LICZ_PL=" exit /b :znaczniki_transformuj setlocal setlocal DisableDelayedExpansion echo SET "str=%%%~1%%">"%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" CALL "%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" SET "str=%str:^^^!=!%" SET "str=%str:^^!=!%" SET "str=%str:^!=!%" SET "str=%str:!=^^^^^!%" echo SET "str=%str%">"%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" endlocal endlocal CALL "%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" goto:eof :znaczniki_transformuj_wynik setlocal setlocal DisableDelayedExpansion echo SET "str=%%%~1%%">"%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" CALL "%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" SET "str=%str:^^!=!%" SET "str=%str:^!=!%" if not defined Rozwijanie ( SET "str=%str:(=^^^(%" SET "str=%str:)=^^^)%" SET "str=%str:!=^^^!%" ) else ( SET "str=%str:(=^(%" SET "str=%str:)=^)%" SET "str=%str:!=^!%") echo SET "%~2=%str%">>"%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" exit /b Teraz przyk³ad kompletnego skryptu Batch, wraz z przyk³adowym u¿yciem tej funkcji wewn±trz: =========================================================================================== @echo off REM Przypisanie zmiennych z polskimi literami, pochodz±ce z trybu TXT (gdy¿ nadane Notatnikiem wewn±trz Batch) SET Test=¡ÆÊ£ÑÓ¦¬¯ ±æê³ñ󶼿 i co¶ tam jeszcze SET Inna_zmienna=Cokolwiek - np. ¿d¿b³o trawy REM Pokazanie w poleceniu CMD b³êdnej zawarto¶ci zmiennych przed zmianami, czyli nadal jest z TXT echo Test = %Test% echo Inna_zmienna = %Inna_zmienna% REM Wywo³anie jako funkcji do zamiany polskich liter (pochodz±ce z trybu tekstowego, zatem parametr /TXT ) CALL:Zamien_polskie_litery /TXT Test Inna_zmienna REM Pokazanie w poleceniu CMD prawid³owej zawarto¶ci zmiennych po zmianach z TXT na CMD echo. echo Test = %Test% echo Inna_zmienna = %Inna_zmienna% REM Zakoñczenie skryptu goto:eof @echo off REM ******************************************************************** REM # # # # F U N K C J E P O M O C N I C Z E # # # # REM ******************************************************************** :Zamien_polskie_litery - Parametr pierwszy okre¶la typ zamiany: /TXT lub /CMD lub /ANGT lub /ANGC REM Parametry kolejne to nazwy zmiennych: nazwa_zmiennej_1 [ nazwa_zmiennej_2 ... nazwa_zmiennej_60 ] REM /TXT - zamienia z formatu plików tekstowych TXT, w tym Batch (BAT) >>> na tryb poleceñ CMD REM /CMD - zamienia z trybu poleceñ CMD >>> na format plików tekstowych TXT, w tym Batch (BAT) REM Uwaga: trzeba najpierw wczytaæ wynik polecenia CMD do zmiennej i dopiero wtedy podaæ nazwê tej zmiennej REM /ANGT - usuwanie polskich znaków z trybu tekstowego TXT, czyli zamiana na odpowiedniki angielskie (ANG) REM /ANGC - usuwanie polskich znaków z trybu poleceñ CMD, czyli zamiana na odpowiedniki angielskie (ANG) REM Podawaæ tylko nazwy zmiennych, a nie ich warto¶ci, za¶ rezultat zamiany uzyskujemy do tej samej zmiennej REM Ver.1.4 Opracowanie: Artur Zgadzaj http://www.widzenia.com/info (Login: info Has³o: computer) SET /A LICZ_PL=%RANDOM% * 1000 / 32768 + 1 setlocal set "Rozwijanie=!" setlocal EnableDelayedExpansion SET CMD=165,198,202,163,209,211,140,143,175,185,230,234,179,241,243,156,159,191 SET TXT=164,143,168,157,227,224,151,141,189,165,134,169,136,228,162,152,171,190 SET ANG=65,67,69,76,78,79,83,90,90,97,99,101,108,110,111,115,122,122 SET "Zestaw_1=" if /I "%~1"=="/TXT" SET Zestaw_1=%TXT%&SET Zestaw_2=%CMD%&shift if /I "%~1"=="/CMD" SET Zestaw_1=%CMD%&SET Zestaw_2=%TXT%&shift if /I "%~1"=="/ANGT" SET Zestaw_1=%ANG%&SET Zestaw_2=%CMD%&shift if /I "%~1"=="/ANGC" SET Zestaw_1=%ANG%&SET Zestaw_2=%TXT%&shift if "%Zestaw_1%"=="" (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Bledny pierwszy parametr /CMD lub /TXT lub /ANGT lub /ANGC&TIMEOUT /T 15>nul&exit /b) if "%~1"=="" (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Brak nazwy pierwszej zmiennej zawierajacej tekst&TIMEOUT /T 15>nul&exit /b) if not exist CHARLIB.BAT (FOR /F %%I IN ("CHARLIB.BAT") DO (if "%%~$PATH:I"=="" echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Brak CHARLIB.BAT, znajdz w Google lub na:&echo https://sites.google.com/site/dbenhamfiles&echo.&TIMEOUT /T 60>nul&exit /b)) CALL CHARLIB initLib if exist "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" del "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" :nastepna_zmienna if "%~1"=="" goto koniec_PL if "!%~1!"=="" (shift&if not "%~1"=="" goto nastepna_zmienna) SET /A L=0&SET Wynik= CALL:znaczniki_transformuj "%~1" :kolejny_znak SET Y=!str:~%L%,1!&if "!Y!"=="" goto pomin_kolejny_znak CALL CHARLIB asc str !L! Kod>nul if "%Kod%"=="94" SET "Y=" FOR /F "tokens=1-18 delims=," %%A IN ("!Zestaw_2!") DO ( FOR /F "tokens=1-18 delims=," %%a IN ("!Zestaw_1!") DO ( if %Kod%==%%A CALL CHARLIB chr %%a Y if %Kod%==%%B CALL CHARLIB chr %%b Y if %Kod%==%%C CALL CHARLIB chr %%c Y if %Kod%==%%D CALL CHARLIB chr %%d Y if %Kod%==%%E CALL CHARLIB chr %%e Y if %Kod%==%%F CALL CHARLIB chr %%f Y if %Kod%==%%G CALL CHARLIB chr %%g Y if %Kod%==%%H CALL CHARLIB chr %%h Y if %Kod%==%%I CALL CHARLIB chr %%i Y if %Kod%==%%J CALL CHARLIB chr %%j Y if %Kod%==%%K CALL CHARLIB chr %%k Y if %Kod%==%%L CALL CHARLIB chr %%l Y if %Kod%==%%M CALL CHARLIB chr %%m Y if %Kod%==%%N CALL CHARLIB chr %%n Y if %Kod%==%%O CALL CHARLIB chr %%o Y if %Kod%==%%P CALL CHARLIB chr %%p Y if %Kod%==%%Q CALL CHARLIB chr %%q Y if %Kod%==%%R CALL CHARLIB chr %%r Y )) SET Wynik=!Wynik!!Y!&SET /A L+=1&if not "!str:~%L%,1!"=="" goto kolejny_znak :pomin_kolejny_znak CALL:znaczniki_transformuj_wynik Wynik "%~1" shift&if not "%~1"=="" goto nastepna_zmienna :koniec_PL endlocal endlocal if exist "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" (CALL "%TEMP%\%LICZ_PL%_Wyniki_PL.BAT") else (echo.&echo Funkcja: Zamien_polskie_litery&echo.&echo Blad wykonania, nie mozna uzyskac wynikow&TIMEOUT /T 60>nul&exit /b) if exist "%TEMP%\%LICZ_PL%_*.BAT" DEL "%TEMP%\%LICZ_PL%_*.BAT" SET "LICZ_PL=" exit /b :znaczniki_transformuj setlocal setlocal DisableDelayedExpansion echo SET "str=%%%~1%%">"%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" CALL "%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" SET "str=%str:^^^!=!%" SET "str=%str:^^!=!%" SET "str=%str:^!=!%" SET "str=%str:!=^^^^^!%" echo SET "str=%str%">"%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" endlocal endlocal CALL "%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" goto:eof :znaczniki_transformuj_wynik setlocal setlocal DisableDelayedExpansion echo SET "str=%%%~1%%">"%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" CALL "%TEMP%\%LICZ_PL%_Zamien_znaczniki.bat" SET "str=%str:^^!=!%" SET "str=%str:^!=!%" if not defined Rozwijanie ( SET "str=%str:(=^^^(%" SET "str=%str:)=^^^)%" SET "str=%str:!=^^^!%" ) else ( SET "str=%str:(=^(%" SET "str=%str:)=^)%" SET "str=%str:!=^!%") echo SET "%~2=%str%">>"%TEMP%\%LICZ_PL%_Wyniki_PL.BAT" exit /b Teraz to samo, ale z u¿yciem zewnêtrznego skryptu: Zamien_polskie_litery.bat zapisanego osobno wcze¶niej (znika tu dwukropek po CALL i zawarto¶æ funkcji) =================================================================================== @echo off REM Przypisanie zmiennych z polskimi literami, pochodz±ce z trybu TXT (gdy¿ nadane Notatnikiem wewn±trz Batch) SET Test=¡ÆÊ£ÑÓ¦¬¯ ±æê³ñ󶼿 i co¶ tam jeszcze SET Inna_zmienna=Cokolwiek - np. ¿d¿b³o trawy REM Pokazanie w poleceniu CMD b³êdnej zawarto¶ci zmiennych przed zmianami, czyli nadal jest z TXT echo Test = %Test% echo Inna_zmienna = %Inna_zmienna% REM Wywo³anie zewnêtrznego skryptu BAT do zamiany polskich liter (pochodz±ce z trybu tekstowego, zatem parametr /TXT ) CALL Zamien_polskie_litery /TXT Test Inna_zmienna REM Pokazanie w poleceniu CMD prawid³owej zawarto¶ci zmiennych po zmianach z TXT na CMD echo. echo Test = %Test% echo Inna_zmienna = %Inna_zmienna% REM Zakoñczenie skryptu goto:eof Przyk³ad u¿ycia zamiany polskich liter, gdy chcemy uzyskaæ pe³n± nazwê u¿ytkownika systemu Windows na podstawie jego loginu. Skrypt pokazuje mechanizm zamiany polskich liter pomiêdzy trybem TXT, a CMD i odwrotnie. Dla jego przetestowania trzeba rêcznie wcze¶niej utworzyæ u¿ytkownika w systemie Windows: Login: Ada¶ Pe³na nazwa: Ada¶ ¡ÆÊ£ÑÓ¦¬¯ ±æê³ñ󶼿 =================================================================================== echo off REM UWAGA: wcze¶niej trzeba utworzyæ rêcznie u¿ytkownika, jako Login: Ada¶ Pe³na nazwa: Ada¶ ¡ÆÊ£ÑÓ¦¬¯ ±æê³ñ󶼿 SET Login=Ada¶ SET Login_opis=Login u¿ytkownika SET Pelna_Nazwa_opis=Pe³na nazwa REM Uzyskanie prawid³owych kodów polskich liter dla poleceñ CMD CALL Zamien_polskie_litery /TXT Login Login_opis Pelna_Nazwa_opis REM Pobranie pe³nej nazwy dla u¿ytkownika o loginie Ada¶ REM Uwaga: je¶li angielska wersja systemu Windows to zamiast nazwa daæ name FOR /F "tokens=3,4,5" %%f IN ('net user ^"%Login%^"^|find ^"nazwa^"') DO (SET "Pelna_Nazwa=%%f %%g %%h") REM Wy¶wietlenie wyników na ekranie, ale nadal w CMD echo %Login_opis% = %Login% echo %Pelna_Nazwa_opis% = %Pelna_Nazwa% REM Uzyskanie prawid³owych kodów polskich liter, aby wyeksportowaæ je do pliku tekstowego TXT CALL Zamien_polskie_litery /CMD Login Pelna_Nazwa REM Wykesportowanie wyników do pliku tekstowego TXT echo Login u¿ytkownika = %Login%>%TEMP%\Wynik.TXT echo Pe³na nazwa = %Pelna_Nazwa%>>%TEMP%\Wynik.TXT REM Pokazanie wyników z pliku tekstowego w Notatniku START NOTEPAD %TEMP%\Wynik.TXT Pause Na koniec przyk³ad zamiany polskich liter w ca³ym pliku tekstowym lub usuwanie ogonków, czyli zamiana polskich liter na odpowiedniki angielskie. Okre¶l nazwê i lokalizacjê pliku w zmiennej "Plik". @echo off REM Przyk³ad zamiany polskich liter w ca³ym pliku tekstowym. Okre¶l nazwê i lokalizacjê pliku w zmiennej "Plik" poni¿ej. REM -------------------------------------------------------------------------------------------------------------------- REM UWAGA: Skrypt pracuje bardzo wolno. W koñcu to jest skrypt realizowany i interpretowany krok po kroku, a nie skompilowany program w C++ REM Poza tym jêzyk w Batch ma wiele ograniczeñ i utrudnieñ, co wymaga mnóstwo sztuczek i obej¶æ, a to bardzo spowalnia dzia³anie. REM Powolno¶æ ta wynika g³ównie z dzia³ania skryptu pomocniczego CHARLIB.BAT z przyczyn opisanych powy¿ej. Zatem nadaje siê to do REM zamiany liter w ma³ych plikach. setlocal SET Plik=Plik_z_polskimi_literami.txt setlocal EnableDelayedExpansion REM Zamiana polskich liter z pliku tekstowego z trybu TXT na tryb CMD if exist "%TEMP%\Wynik_zamiany_pliku_PL.txt" del "%TEMP%\Wynik_zamiany_pliku_PL.txt" SET /A N=1 for /f "tokens=* delims=" %%a in (%Plik%) do ( SET "Linia=%%a" CALL Zamien_polskie_litery /TXT Linia echo [!N!] !Linia! echo !Linia!>>"%TEMP%\Wynik_zamiany_pliku_PL_w_CMD.txt" SET /A N+=1 ) REM Zamiana polskich liter na odpowiedniki angielskie, czyli usuwanie ogonków z pliku tekstowego echo =============================================================================== if exist "%TEMP%\Wynik_zamiany_pliku_ANG.txt" del "%TEMP%\Wynik_zamiany_pliku_ANG.txt" SET /A N=1 for /f "tokens=* delims=" %%a in (%Plik%) do ( SET "Linia=%%a" CALL Zamien_polskie_litery /ANGT Linia echo [!N!] !Linia! echo !Linia!>>"%TEMP%\Wynik_zamiany_pliku_ANG.txt" SET /A N+=1 ) START Notepad "%Plik%" START Notepad "%TEMP%\Wynik_zamiany_pliku_PL_w_CMD.txt" START Notepad "%TEMP%\Wynik_zamiany_pliku_ANG.txt" Exit /b
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads