www.promanski.info

Skrypty .BAT, .CMD, .VBS

Różne pożyteczne skrypty (bat, cmd, vbs), które niejednokrotnie wykorzytuję w swojej pracy zawodowej aby ułatwić sobie życie… bo czasem leniwy jestem :-) W zależności od skryptu należy go zapisać jako: *bat, *.cmd, *.vbs.
logo

UWAGA!!! Dział Skrypty jak i sama strona promanski.info nie będą dalej rozwijane. Treści, przykłady skryptów a także komentarze autor strony pozostawia dla potomnych ;-)

dotZdalne dodanie opisu komputera
Jeśli mamy komputery w domenie i nie mamy ich opisów (PPM na Mój komputer, zakładka Nazwa komputera, pole: Opis komputera) a jest on np. niezbędny do identyfikacji sprzętu (użytkownika, lokalizacji, funkcji) można go dodać w niezwykle prosty sposób. Wystarczy połączyć się ze zdalnym rejestrem i wyedytować odpowiedni klucz. Jednak klikanie po gałęziach rejestru nie zawsze jest miłym i ciekawym zajęciem. W związku z tym kawałek skryptu, który ułatwi nam to zadanie.
@echo off
set /p nazwa="nazwa komp: "
set /p opis="opis komp: "
reg delete \\%nazwa%\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v srvcomment
reg add \\%nazwa%\HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v srvcomment /t REG_SZ /d %opis%

Objaśnienia:
– Nazwa komp – podajemy nazwę komputera w domenie / grupie roboczej
– Opis komputera – to właśnie ta część odpowiada za opis. W przypadku nazwy wieloczłonowej umieszczamy ją w cudzysłowach (cudzysłowiu?)
– reg delete – na wszelki wypadek skrypt usuwa odpowiedni klucz rejestru
– reg add – a w tym miejscu dodaje odpowiedni klucz z parametrem opisu komputera
Zmiany będą widoczne po restarcie systemu.

dotLogin Script – akcja na wybranych użytkownikach domeny
Zarządzanie użytkownikami i ich zasobami bywa czasem męczące. Poziom umiejętności korzystania z komputer bywa różny, dlatego też czasem najprostsza czynność jaką jest instalacja drukarki sieciowej bywa problemem. Oczywiście można połączyć się zdalnie z daną maszyną i wyklikać użytkownikowi drukarkę. Jednak łatwiej jest to zrobić za pomocą login scriptu domeny.
Na kontrolerze domeny istnieje folder NETLOGON, w którym znajdują się skrypty logowania, np. mapowanie zasobów, synchronizacja czasu itp. Skrypt taki jest wykonywany przy każdym logowaniu użytkownika. W związku z tym łatwo jest w jednym miejscu zarządzać procesem wykonania skryptu dla całej domeny. Postanowiłem napisać niewielki kawałek kodu, który na podstawie listy użytkowników zawartej w pliku txt, będzie wykonywał określoną akcję na jego koncie, np. mapowanie drukarki sieciowej.

@echo off
echo/%USERNAME%|findstr/ig:"usernamelist.txt">nul&&(goto istnieje)||(goto niema)
:istnieje
echo Na liscie istnieje uzytkownik: %username%
findstr.exe /V /I /C:%username% usernamelist.txt>usernamelist.tmp
del usernamelist.txt
ren usernamelist.tmp usernamelist.txt
goto :EOF
:niema
echo Brak uzytkownika: %username% na liscie
goto :EOF

Wyjaśnienie:
Druga linia skryptu sprawdza w pliku usernamelist.txt czy logujący sie uyżytkownik istnieje na liście, jeśli go nie ma przechodzi do sekcji :niema, jeśli jest przechodzi do sekcji :istnieje. W tej sekcji wyświetlane jest informacja o istnieniu użytkownika (można ją zastąpić dowolną akcją – np. instalacja drukarki sieciowej) a następnie aktualizowany jest plik usernamelist.txt, w którym usuwany jest logujący się użytkownik (tak aby po koljenym logowaniu nie wykonywała się ta sama akcja na jego koncie). Oczywiście do skryptu można dołożyć obsługę błędów, np. jeśli dana drukarka nie będzie dostępna, nie będzie możliwości jej zainstalowania czy użytkownik nie będzie miał wystarczjących uprawnień. W takim przypadku skrypt będzie mógł powtórzyć działania i np. wysłac mail do administratora z informacją o błędzie. Plik usernamelist.txt powinien mieć postać:

userlogin1
userlogin2
userloginBBB
....
....
userloginXYZ

dotDzień tygodnia jako katalog – Wyświetlanie dnia tygodnia i tworzenie katalogu z nazwą dnia tygodnia. Próbowałem kiedyś sposobu wyciągnięcia daty, dnia tygodnia z ustawień regionalnych. Pomysł był chybiony bo w zależności od ustawień ze skryptem i jego wynikiem działy się różne rzeczy na różnych komputerach. Dlatego też można wykorzystać uniwersalny skrypt, który tworzy katalog w nazwie zawierający dzień tygodnia. Opcja ciekawa dla wszystkich, którzy wykonują w pracy, domu codzienne kopie danych. Poniższy skrypt należy zapisać jako *.bat.
@echo off & setlocal enableextensions
echo>dzien.vbs WScript.Echo WeekDayName(Weekday(Date),true)
for /f %%d in ('cscript //nologo dzien.vbs') do set wd_=%%d
rem ponizsza komenda wyswietli dzien tygodnia na ekranie
echo Weekday wd_=%wd_%
rem utworzenie katalogu
md %wd_%
del dzien.vbs
rem pauza - tak na wszelki wypadek :)
pause

dotKamikaze – kopiuje określoną zawartość do samego siebie. Skrypt przydatny przy zamazywaniu dysku, choć może trwać to dość długo przy obecnej wielkości dyskach. W skypcie w miejscu tu jakis tekst można wpisać dowolny ciąg znaków i należy go zapisać pod nazwą skrypt.bat
:start
echo tu jakis tekst >> skrypt.bat
goto start

dotArchiwizacja za pomocą konsoli RAR
Użytkownicy WinRARa nie muszą koniecznie wykorzystywać graficznego interfejsu do sporządzania kopii bezpieczeństwa danych. WinRAR oferuje również doskonałą współpracę wykorzystując wiersz poleceń. Dodatkowym atutem wykorzystania WinRARa z wiersza poleceń jest to, że może być stosowany w skryptach archiwizacyjnych, które można uruchamiać z Zaplanowanych zadań systemu Windows. Dodatkowo plik RAR.exe może być na danym komputerze całkowicie odrębną aplikacją, którą możemy umieścić np. w katalogu ze skryptem (dzięki temu nie będzie konieczne odwoływanie się do ścieżki instalacyjnej WinRAR).
Pomoc w opanowniu składni “dosowego” RARa jest wyświetlana po wykonaniu w wierszu poleceń komendy: rar /?. Ogrom opcji może przerazić, jednak po głębszym wczytaniu się okazuje się, że pomoc jest doskonała. Poniżej przedstawiam przykładowe skrypty, które wykorzystuje w swojej pracy do wykonywania kopii danych.
echo off
cls
rar.exe u -m4 -ep1 e:\Archiwum\archiwum1 d:\Dane1
cls
rar.exe u -m5 -ep2 e:\Archiwum\Archiwum2 "d:\Moje dokumenty"
cls
rar.exe u -m2 -ep3 e:\Archiwum\Archiwum3 "C:\Documents and settings\fascik\Pulpit"
cls

Objaśnienie poszczególnych opcji:
– rar.exe – uruchamiany moduł WinRARa z wiersza poleceń,
– u – aktualizuje pliki, jeśli archiwizacja nie była wykonywana to RAR po prostu pominie ten parametr,
– -m4, -m5, -m2 – stopień kompresji, zakres od 0..5,
– -ep1, -ep2, -ep3 – parametry odnoszące się do ścieżek archiwizowanych danych (więcej informacji w pomocy RAR.exe),
– e:\Archiwum\archiwum1, Archiwum2, Archiwum3 – określa nazwy poszczególnych archiwów (oczywiście można wszystkie dane pakować do jednego archiwum),
– d:\Dane1, “d:\Moje dokumenty”, “C:\Documents and…” – określa archiwizowane katalogi z danymi, (cudzysłowy w dwóch ostatnich składniach występują po to by RAR.exe pobierał poprawnie ścieżki do danych).
Oczywiście oprócz wymienionych poleceń dostępnych jest wiele innych znanych z graficznego modułu WinRARa, są to m.in. naprawa archiwum, konwersja do SFX, zakładanie haseł itd. Skopiowaną składnię należy zapisać jako plik *.bat.

dotOdtwarzanie dźwięku po wykonanej archiwizacji
Ciekawą opcją może być również dodanie dźwięku, który będzie odtwarzany po zakończeniu archiwizacji. Efekt taki uzyskamy poniższą składnią:
start /i /min sndrec32.exe -play -close "D:\Archiwum\done.wav"
exit

Objaśnienia:
start – uruchamia oddzielne okno w celu wykonania programu lub polecenia,
/i – nowym środowiskiem będzie oryginalne środowisko przekazane do programu cmd.exe, a nie bieżące środowisko,
/min – uruchamia zminimalizowane okno,
sndrec32.exe – uruchamia Rehjestrator dźwięku Windows,
-play – odgrywa dźwięk w sndrec32.exe,
-close – zamyka sndrec32.exe po odegraniu dźwięku,
“D:\Archiwum\done.wav” – ścieżka do pliku z dźwiękiem.
Powyższy skrypt można dopisać na końcu skryptu archiwizacji danych.

dotUstawianie proxy dla Windows
Czasem zachodzi potrzeba przekonfigurowania Ustawień sieciowych w systemach Windows. O ile w sieci jest kilka komputerów nie jest problemem przejście i ustawienie wszystkich odpowiednich danych. Co zrobić jeśli komputerów jest kilkaset i chcemy zmienić wszystkim ustawienia proxy? Wystarczy wykorzystać fragment rejestru oraz prosty skrypt *.bat.
Najpierw należy sciagnąć plik proxy.reg i wyedytować “ProxyServer”=”10.0.0.1:8080” wpisując własny adres serwera proxy i port oraz “ProxyOverride”=”10.0.0.2;poczta; wpisująć wyjątki adresów lokalnych. Następnie ściągnąć proxy.bat, w którym powinny znaleźć się następujące wpisy:
regedit /s proxy.reg
Ostatnie dwie linie pliku proxy.reg pozwalają na ustawienie jednakowej strony startowej w IE na wszystkich komputerach.
Oba pliki: proxy.reg i zapisany plik *.bat należy umieścić w jednym folderze a następnie dodać plik *.bat do skryptów logowania.

dotSkrypt PSEXEC i Friendly Pinger 5.0
Friendly Pinger 5.0 posiada Zasobnik, który pozwala na ściąganie informacji o sprzęcie i zainstalowanym oprogramowaniu z komputera lokalnego ale również z komputerów zdalnych. Aby móc ściągnąć dane z komputerów zdalnych należy posłużyć się programem psexec.exe oraz Collect.exe (program znajduje się w katalogu instalacyjnym Friendly Pinger), następnie napisać prosty skrypt o następującej składni:
psexec.exe \\IP_1 -u ADMIN -p HASLO -c collect.exe "-s:IP_2"
Objaśnienia:
IP_1 – adres IP komputera, którego dane chcemy ściągnąć
ADMIN – konto z uprawnieniami administratora na komputerze zdalnym
HASLO – hasło administratora na komputerze zdalnym
IP_2 – adres IP komputera, na którym zainstalowany jest FP
Dodatkowo we Friendly Pinger w menu Zasobnik – Opcje Zasobnika – Zbieranie – Collect.exe należy ustawić adres IP komputwera, do którego będą spływały informacje (czyli adres IP_2).

dotPobieranie daty
Skrypty działają pod Windows 2000, pod Windows XP struktura skryptu jest trochę inna ponieważ “date /t” zwraca RRRR-MM-DD. Dlatego już samodzielnie dopasujcie zasadę pozyskiwania daty i czasu do tego systemu :-)
Często zdarza się, że potrzebujemy stworzyć katalog, któego nazwa będzie zawierała aktualną datę lub czas (albo jedno i drugie). Jeśli pewne polecenia (np. archiwizację) wykonuje za nas skrypt to nie ma prostego sposobu na zautomatyzowanie tworzenia takich katalogów. Można jednak wykorzystać komendy wiersza poleceń date i time.Odpalamy wiersz poleceń i wpisujemy:
date /t
Objaśnienie:
– date – bez parametrów pozwala na ustawienie nowej daty
– /t – pozwala na wyświetlenie bierzącej daty na ekranie
Wynikiem polecenia date /t może być wynik:
Śr 2005-07-27
Czas na objaśnienia, które pozwolą łatwiej zrozumieć dalszą część tworzenia skryptu. Jak widać wynik składa się z 13 znaków, wliczając w to kreski i spację. Napiszemy skrypt, który stworzy katalog i w nazwie będzie miał bieżący rok.
md %date:~3,4%
Objaśnienie:
md – tworzy katalog
date – pobiera datę z polecenia date
~3,4 – które cyfry i ile cyfr z wynikowego działania date /t ma pobrać
W powyższym przykładzie zastosowałem pobieranie do nazwy katalogu czterech cyfr składających się na rok. Jak już wcześniej wspomniałem polecenie date /t zwraca 13 znakowy wynik, który wykorzystaliśmy w skrypcie. Cyfra 3 oznacza, od którego miejsca skrypt zacznie pobierać znaki z date /t. Istnieje jednak mały haczyk, ponieważ liczenie zaczyna się od pozyckji 0 a nie 1. Dlatego też w przytoczonym wyżej przykładzie: Śr 2005-07-27 pozycja zerowa to litera Ś, pozycja pierwsza to r, pozycja druga to spacja i pozycja trzecia (od której zaczyna się pobieranie znaków) to cyfra 2. Z kolei cyfra 4 w powyższym skrypcie oznacza ile kolejnych znaków skrypt ma pobrać.
Czas na kolejny przykład, w którym pobierzemy rok oraz miesiąc i stworzymy katalog o tej nazwie.
md %date:~3,7%
Po wykonaniu skrypt powinien zostać utworzony katalog o nazwie 2005-07.
Krótkie objaśnienie: cyfra 3 oznacza, że skrypt pobiera 3 znak z date /t zaczynając liczyć od 0 a następnie pobiera kolejne siedem znaków. Kolejne siedem znaków w naszym przypadku to następujące znaki: “2000-07”. Jak łatwo zauważyć znak “-” również jest liczony jako kolejna pozycja i kolejny znak.
Stwórzmy katalog, którego nazwa będzie zawierać pełną datę (rok, miesiąc i bieżący dzień). W tym celu wykonujemy skrypt:
md %date:~3,10%
Po wykonaniu skrypt powinien zostać utworzony katalog o nazwie 2005-07-27, czyli zawierający bieżącą datę. Oczywiście można dowolnie modyfikować skrypt, np. jeśli chcemy wykonywać kopie misięczne danych w określonych dniach. W tym celu wystarczy wykonać następujący skrypt:
md %date:~3,4%-%date:~11,2%
Powyższy skrypt pobierze 4 cyfry oznaczające rok oraz przejdzie do pozycji 11 (licząc dane z date /t od zera) i pobierze dwa znaki oznaczające dzien miesiąca.

dotPobieranie czasu
Pobieranie czasu do skryptu jest równie proste ;-) jak w przypadku daty. Jednak w dacie występują pewne ograniczenia, o których za chwilę. Polecenie time /t w wierszu poleceń zwraca przykładowy wynik:
13:22
Postępowanie z tworzeniem skryptów jest podobne, jednak jak łatwo zauważyć w godzinie występuje znak “:”, który nie może być użyty jako nazwa katalogu, dlatego też należy posłużyć się pewnym obejściem. Na razie stwórzmy katalog, którego nazwa będzie godziną:
md %time:~0,2%
Po wykonaniu skryptu powinien pojawić się folder o nazwie bieżącej godziny. Postępowanie jest podobne, czyli skrypt pobiera od miejsca zerowego 2 pierwsze cyfry. Teraz weźmy na warsztat minuty, stwórzmy skrypt, który stworzy katalog o nazwie jako bieżące minuty:
md %time:~3,2%
Po wykonaniu skryptu powinien pojawić się folder o nazwie bieżącej minuty (minut).
A poniżej najciekawsza część skryptu. Jak stworzyć folder z bieżącą godziną i minutami? Jak wspomniałem znak “:” nie może zostać użyty w nazwie folderu i stworzenie skryptu:
md %time:~0,4%
zwróci błąd. Dlatego też należy użyć innego znaku zamiast “:”, a składnia skryptu będzie wyglądać nastepująco:
md %time:~0,2%-%time:~3,2%
Zamiast znaku “:” został użyty “-“, oczywiście można go zastąpić innym dozwolonym w nazwach plików i folderów znakiem.
Inne wskazówki
Jeśli często w skrypcie będziemy wykorzystywać tworzenie folderów warto stworzyć zmienne, do których będziemy odwoływać się w skrypcie. Można to zrobić w następujący sposób:
set czas=%time:~0,2%-%time:~3,2%
md %czas%

set data=%date:~3,10%
md %data%

Może się wydawać, że składnie skryptów są dość skompikowane, jednak po kilku stworzonych skryptach możemy opanować ich pisanie i tworzenie w ten sposó katalogów z datami i godzinami w nazwach.

dotPing określonego zakresu adresów IP
Niekiedy zachodzi potrzeba sprawdzenia dostępności określonego zakresu adresów IP. Polecenie ping dostępne w Windows pozwala na pingowanie tylko jednego adresu IP. Co zrobić jeśli chcemy sprawdzić dostępne komputery w danej sieci? W tym celu wystaczy użyć narzędzia wpsweep, które pozwala na pingowanie określonego zakresu adresów IP. Składnia narzędzia jest nadzwyczaj prosta:
wpsweep [start IP] [stop IP] [czas ms]
Objaśnienia:
[start IP] – adres IP początkowy, od którego zaczynamy pingowanie
[stop IP] – adres IP końcowy
[czas ms] – czas w milisekundach jaki wpsweep będzie czekał na odpowiedź.

Przykład wykorzystania wpsweep:
wpsweep 10.0.0.1 10.0.0.254 10
W powyższym przykładzie sprawdzimy dostępność adresów IP z zakresu 10.0.0.1-254, a wpsweep będzie czekał 10ms na odpowiedź od każdego z urządzeń w sieci. Jeśli czas odpowiedzi będzie dłuższy wpsweep uzna urządzenie jako nieobecne w sieci.

dotWykrywanie systemu operacyjnego
W skrypcie tworzącym folder z określoną datą wspomniałem, że w Windows XP ustawienia daty są inne, więc aby dokonać archiwizacji należałoby pisać dwa oddzielne skrypty dla Windows 2000 i Windows XP. Można to jednak zrobić za pomocą jednego skryptu. Wystarczy tylko napiać prosty skrypt wykrywający dany system operacyjny. W zalezności od systemu skrypt przekieruje się do sekcji gdzie można umieścić dalsze komendy, które ma wykonać. Oto skrypt:

@ECHO OFF
VER | find "XP" > nul
IF %errorlevel% EQU 0 GOTO winxp
VER | find "2000" > nul
IF %errorlevel% EQU 0 GOTO win2k
VER | find "NT" > nul
IF %errorlevel% EQU 0 GOTO winnt
ECHO Twoj system nie jest obslugiwany
GOTO :END
:winxp
ECHO Tu mozna wstawic skrypty odnoszace sie do Windows XP
goto :END
:win2k
ECHO Tu mozna wstawic skrypty odnoszace sie do Windows 2000
goto :END
:winnt
ECHO Tu mozna wstawic skrypty odnoszace sie do WINNT
goto :END
:END
pause

Całość sprowadza się do edytowaia sekcji: :winxp, win2k, winnt i wpisania zamiast ECHO Tu mozna wstawić skrypty odnoszace sie do… swoje własne komendy.

dotJeszcze inny sposób na katalog z datą w nazwie
Ciągle poszukuję uniwersalnego sposobu na tworzenie katalogu z datą/czasem w nazwie. Niestety wszstkie sposoby, które znajduję opierają się o date i time. Poniżej kolejny sposób – bardziej elegancko wyglądający. Skrypt działa poprawnie w Windows 2000 Pro PL i tworzy katalog w formacie: YYYY-MM-DD-DZIEN_TYGODNIA-GG-MM. W Windows XP Pro PL niezbędne będą zmiany kosmetyczne w zależności od sposobu wyświetlania daty przez polecenie date /t. Należy wtedy zmienić tokens= i set DYEAR, set DDAYW itd
@echo off
for /f "tokens=2 delims=^/- " %%i in ('date /t') do set DYEAR=%%i
for /f "tokens=1 delims=^/- " %%i in ('date /t') do set DDAYW=%%i
for /f "tokens=3 delims=^/- " %%i in ('date /t') do set DMONTH=%%i
for /f "tokens=4 delims=^/- " %%i in ('date /t') do set DMDAY=%%i
for /f "tokens=1 delims=^/: " %%i in ('time /t') do set THOUR=%%i
for /f "tokens=2 delims=^/: " %%i in ('time /t') do set TMIN=%%i
set katalog=%DYEAR%-%DMONTH%-%DMDAY%-%DDAYW%-%THOUR%-%TMIN%
md %katalog%

dotSprawdzanie uruchomionego programu
Niektóre programy DOSowe; w szczególności pisane w Clipperze; nie lubią gdy je się uruchamia dwa razy w tym samym czasie. Co zrobić aby “odporny na wiedzę” użytkownik nie odpalał dwa razy tego samego programu? Wystarczy odpowiednio zmodyfikować skrót do programu i napisać batcha.

:: skrypt sprawdzaiajcy dzialanie programu
@echo off
TLIST | FIND "notepad.exe" /i
IF %errorlevel% EQU 0 goto TAK
ECHO OK..odpalam program
notepad.exe
GOTO :END
cls
:TAK
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ş ş
echo ş ! ! ! UWAGA ! ! ! ş
echo ş ş
echo ş Masz juľ uruchomionĄ jednĄ kopi© programu. ş
echo ş ş
echo ş Za 15 sekund nastĄpi zamkni©cie tego okna. ş
echo ş ş
echo ş Zamknij kopi© programu ş
echo ČÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍĽ
:: wykorzystannie timeout.exe aby poczekal na zamkniecie okna - nie jest konieczne
timeout.exe 15
:END

Powyższy skrypt sprawdza czy jest uruchomiony notepad.exe(Notatnik), jeśli nie jest to go odpali (sprawdzanie za pomocą tlist.exe z pakietu Resource Kit), jeśli program jest uruchomiony to wyświetli komunikat i odczeka 15 sekund (timeout.exe) i zamknie okienko skryptu.

Skrypt zapisać jako plik z rozszerzeniem *.BAT i ewentualnie dopisać pozostałe polecenia związane z uruchamianym programem.

dotInterakcja z uzytkownikiem – tworzenie katalogu – skrypt pyta o nazwę katalogu
Jeśli chcemy podczas wykonywania skryptu sami utworzyć katalog można to zrobić za pomocą poniższego przykładowego kodu:

@echo off & setlocal enableextensions
set /P katalog="Wpisz nazwe katalogu:"
if exist %katalog% echo %katalog% istnieje! & goto :END
MD %katalog%
:: ewentualnie mozna tworzyc dodatkowe katalogi
:: MD %katalog%\JAKIS_KATALOG\JAKIS_POTDKATALOG
:END
exit

Skrypt zapisać jako .BAT lub dołączyć do własnego skryptu.

dotSzuka plików o określonym rozszerzeniu i kopiuje je do wskazanej lokalizacji
Skrypt tworzy na dysku D katalog Nowy Folder, nastepnie na dysku C wyszukuje wszystkie pliki z rozszerzeniem TXT i kopiuje je do katalogu “D:\Nowy Folder”.

@echo off
md "d:\Nowy Folder\"
for /f "delims=" %%a in ('dir "c:\*.txt" /s/a/b ^| find /i ".txt"') do (
copy "%%a" "d:\Nowy Folder\"
)

dotWyświetlanie pustych linii w skryptach
Pewnie wielu z Was ma problem jak wyświetlić pustą linię (odstęp pomiędzy liniami). Samo echo nic nie daje. Rozwiązanie jest banalnie proste, wystarczy dodać “:” po echo.
@echo off
echo tekst, pod ktorym jest linia odstepu
echo:
echo nad tym tekstem jest pusta linia

dotNiby Komunikator
Prosty komunikator LAN w oparciu o usługę Posłaniec.
@echo off
:WIADOMOSC
cls
echo Wyslij wiadomosc
:: Poniżej podajemy uzytkownika, nazwę komputera w sieci lub jego adres IP
set /p u=Uzytkownik/Adres IP/Nazwa komputera:
:: Poniżej podajemy wiadomość
set /p w=Wiadomosc:
net send %u% %w%
pause
goto WIADOMOSC

Całość zapisać jako plik z rozszerzeniem BAT i (jeśli tego nie zrobiliście wcześniej) odpalić usługę Posłaniec.

dotKolorowy wiersz poleceń
Jeśli chcesz by skrypt, który napisałeś/-aś wyglądał ładnie można mu dodać kolorków… są dwie metody – jedna to zabawa z ansi.sys druga, bardziej prosta to użycie jednego z programów TSCMD. Dokładniej chodzi o echoc.exe.
Jego składnia jest bardzo prosta. Podajemy komendę echoc a następnie dwie wartości od 0-15.
np. echoc 1 12
Pierwsza wartość liczbowa to kolor tła, druga wartość to kolor tekstu.
Przykładowy skrypt:

@echo off
echoc 0 1 12345
echo.
echoc 0 2 12345
echo.
echoc 0 3 12345
echo.
echoc 2 12 12345
echo.
echoc 3 11 12345
echo.

Dzięki temu otrzymamy ładne kolorki w skypcie.

dotPowtarzanie okeślonej czynności

Przydatne gdy np. chcesz kontrolować działanie serwera. Ustawiasz sobie poniższy skrypt, który pinguje co określony czas (za pomocą timeout.exe z pakietu ResourceKit dla Windows NT). Ewentualnie w przypadku braku odpowiedzi można ustawić określoną akcję.

@echo off
:loop
:: ponizej czynnosc, ktora chcesz wykonac
ping desktop
:: zatrzymanie na 10s.
timeout 10
::powrot do loop
goto loop

Plik zapisać jako CMD lub BAT.

dotTworzenie katalogów z listy
Jeśli chcesz stworzyć dowolną ilość katalogów o różnych nazwach to wystarczy, że ich nazwy będziesz miał w pliku tekstowym (każda nazwa w kolejnym wierszu) i storzysz skrypt:

@echo off
for /f "delims=" %%a in (PLIK_Z_NAZWAMI.txt) do md "%%a"

PLIK_Z_NAZWAMI.txt – plik z nazwami katalogów. Skrypt zapisujemy jako CMD lub BAT. Skrypt oraz plik tekstowy powinny znaleźć się w jedym katalogu.

dotWykonanie akcji na kilku komputerach jednocześnie
Jeśli musisz np. skopiować ten sam plik na kilka komputerów jednocześnie. Wystarczy prosty kawałek kodu i plik TXT z listą komputerów:

@echo off
for /f "delims=" %%a in (lista_komputerow.txt) do (
copy "PLIK_DO_PRZEKOPIOWANIA" "\\%%a\C$\"
)

lista_komputerow.txt – plik z nazwami/adresami IP komputerów
PLIK_DO_PRZEKOPIOWANIA – coś co chcemy wrzucić na wszystkie komputery
“\\%%a\C$ – lokalizacja gdzie ma być wrzucony plik – najlepiej robić to przez udostępnienie administratorskie C$

Oczywiście skrypt może mieć całkiem inne przeznaczenie:

@echo off
for /f "delims=" %%a in (lista_komputerow.txt) do (
akcja_jaką_chcemy_podjąć
)

Dokładniej rzecz ujmując to może to być np. ping wszystkich stacji w sieci, itp…

dotUkrycie okna wykonywanego skryptu
Jeśli chcesz by okno, w którym jest wykonywany skrypt. Sama opcja minimalizacji nie jest dostatecznie dobra, bo zawsze można przywrócić okno i np. zatrzymać skrypt.
Jeśli chcesz całkowicie ukryć okno wystarczy prosty kawałek VBS-a:
Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /C nazwa_twojego_skryptu.bat",0
Set oShell = Nothing

I zapisać go z rozszerzeniem *.VBS. Razem ze skryptem VBS musi znaleźć się Twój BAT lub CMD. W skrypcie VBS podajemy nazwę skryptu BAT lub CMD w miejscu nazwa_twojego_skryptu.bat.
Teraz aby uruchomić skrypt BAT, CMD wystarczy odpalić VBS-a. Żadne okno nie pojawi się podczas wykonywania skryptu. Metoda jest dobra np. przy skryptach logowania i mapowaniu dysku z innymi uprawnieniami, gdzie np. pojawia się hasło.

dotSzukarek
Artur podesłał ciekawy skrypt pozwalający na wyszukiwanie 4 rodzajów plików (odt, ods, doc, xls), które następnie są kopiowane do katalogu, którego nazwę podamy. W wersji źródłowej skrypt przeszukuje cały dysk C i wyniki wyszukiwania kopiuje do katalogu Documents and Settings\All users\Pulpit\NASZA_NAZWA_KATALOGU. Dodatkowo skrypt po zakończeniu przeszukiwania odtwarza dźwięk C:\WINDOWS\Media\ding.wav, jesli ktoś ma instalację w innym folderze to trzeba pozmianiać ścieżki.

Szukarek to szybki i ciekawy sposób na znalezienie na dysku dokumentów np. podczas archiwizacji czy też porządkowaniu danych. Nic nie stoi na przeszkodzie by rozszerzyć jego możliwości o poszukiwanie innych plików.

Plik źródłowy można pobrać stąd. Najnowsze wersje skryptu Artur publikuje na mini-forum w dziale Skrypty

dotMonitor prędkości połączenia sieciowego
W napisaniu skryptu pomagało kilka osób i w końcu się udało. Brakowało mi czegoś takiego podczas kontrolowania procesu backupu danych z jednego serwera na drugi – a nie chciało mi się łączyć przez soft do zdalnej administracji. Skrypt moinitoruje prędkość połączenia w bajtach i kilobajtach (download i upload) i wyświetla ilość danych odebranych i wysłanych.

:: skrypt wyswietla predkosc z jaka dane przechodza przez interfejs sieciowy
@echo off
set startrxd=
set startsent=
set rrxd=
set rsent=
set rxd=
set sent=
cls
:top
cls
:: pobieranie informacji
for /f "tokens=2,3 delims= " %%a in ('netstat -e ^| find /i
"bajty"') do (
set STARTrxd=%%a
set STARTsent=%%b)
echo.
echo.
echo Poczekaj chwile, zbieram dane...
ping localhost -n 3 | find /i "from" > nul
:go
for /f "tokens=2,3 delims= " %%a in ('netstat -e ^| find /i
"bajty"') do (
set rxd=%%a
set sent=%%b)
set /a Rrxd=%rxd%-%STARTrxd%
set /a Rsent=%sent%-%STARTsent%
if DEFINED prerxd (set /a rxdbps=%rrxd%-%prerxd% && set /a rxdKbps=%rxdbps%/1024)
if DEFINED present (set /a sentbps=%rsent%-%present% && set /a sentKbps=%sentbps%/1024)
cls
echo.
echo.
if /i "%Rrxd%" LEQ "0" echo Odebrano: brak zmian
::download w bajtach na sekunder
if DEFINED prerxd (echo Odebrano: %rrxd% z predkoscia %rxdbps% bajtow/s)
::download w kilobajtach na sekunde
if DEFINED prerxd (echo Odebrano: %rrxd% z predkoscia %rxdKbps% kB/s)
::upload w bajtach na sekunde
if DEFINED present (echo Wyslano: %rsent% z predkoscia %sentbps% bajtow/s)
::upload w kilobajtach na sekunde
if DEFINED present (echo Wyslano: %rsent% z predkoscia %sentKBps% kB/s)
if /i "%Rsent%" LEQ "0" echo Wyslano: brak zmian
ping localhost -n 2 | find /i "from" > nul
set prerxd=%rrxd%
set present=%rsent%
goto :go

dotKopiowanie określonych plików znajdujących się na liście
Czasem chcesz skopiować tylko określone pliki, np. z jedym rozszerzeniem lub masz mnóstwo plików a chcesz tylko te zaczynające się na literę “b”. Nic prostszego – zrzuć sobie listę plików za pomocą komendy:
dir /b *.txt >lista.txt
Komenda ta pozwoli na zrzucenie nazw wszystkich plików w bieżącym katalogu do pliku lista.txt, następnie można wyedytować plik pod względem założonych przez nas kryteriów i w końcu odpalić nasz skrypt:
@echo off
for /f "tokens=*" %%i in (lista.txt) do copy "%%i" c:\temp\

Skrypt skopiuje tylko pliki znajdujęce się w lista.txe do katalogu C:\temp

dotZmiana rozmiaru okna wiersza poleceń
Jeśli do wykonania skryptu potrzebne Ci jest mniejsze okno wystarczy na początku kodu wpisać kilka linii kodu:
@echo off
mode con:cols=25 lines=3
title Male okno
echo takie male okno
label c: >nul 2>&1

Słowo wyjaśnienia: cols=25 – określa liczbę kolumn, lines=3 – określa liczbę wierszy. Domyślnie wiersz poleceń składa się z 80 kolumn i 25 wierszy.

Ilość komentarzy: 991 do “Skrypty .BAT, .CMD, .VBS”

  1. no energy steven gundry diet prebiotics supplement [url=https://probiotic.us.com]prebiothrive gundry[/url]

  2. auto insurance auto insurance quote online auto insurance costco [url=https://autoinsurance2018.us.com]auto insurance[/url]

  3. I’m gone to inform my little brother, that he should also visit this weblog on regular basis to take updated from latest gossip.

    강남카지노

  4. essay for me essay for me essay for me [url=https://essayforme.us.com]write an analysis essay[/url]

  5. Peculiar article, totally what I needed.

  6. My brother recommended I may like this blog. He was entirely right.
    This publish actually made my day. You can not believe simply how
    much time I had spent for this information! Thanks!

  7. I loved as much as you’ll receive carried out
    right here. The sketch is attractive, your authored
    subject matter stylish. nonetheless, you command get got an nervousness over
    that you wish be delivering the following. unwell unquestionably come more formerly again as exactly the same nearly
    very often inside case you shield this hike.

  8. Hello! I’ve been following your site for a while now and finally
    got the bravery to go ahead and give you a shout out from
    New Caney Texas! Just wanted to say keep up the fantastic job!

  9. progressive motorcycle insurance auto insurance auto insurance [url=https://autoinsurance2018.us.com]low cost auto insurance[/url]

  10. lectin blockers foods high in polyphenols without lectins dr gundry supplements [url=https://lectins.us.com]energy[/url]

  11. Your style is really unique compared to other folks I have read stuff from.
    Thanks for posting when you have the opportunity, Guess
    I’ll just book mark this web site.

  12. Since the admin of this website is working, no hesitation very soon it
    will be well-known, due to its feature contents.

  13. write me an essay essay for me essay for me [url=https://essayforme.us.com]college essay minimum[/url]

  14. probiotic supplements prebiotics supplements probiotics supplements [url=https://probiotic.us.com]probiotics supplements[/url]

  15. I always used to study piece of writing in news papers but now as I am a user of
    web thus from now I am using net for posts, thanks to web.

  16. Wow that was stгаnge. I just wrote ann ijcredіbly long clmment but after I clicked ѕuƄmit my comment didn’t show up.
    Grrrr… well I’m not wгiting all that over again. Anyways, jut
    wanted to say greаt blog!

    Aⅼso visit my web site – architectural trench gratings

  17. cheapest car insurance available top auto insurance companies top auto insurance companies [url=https://autoinsurance2018.us.com]auto insurance[/url]

  18. probiotic supplements dr gundry prebiotics probiotic supplement [url=https://probiotic.us.com]gundry md primal plants[/url]

  19. car insurance policy free auto insurance quotes hagerty classic car insurance [url=https://cheapautoinsurancequotes.us.com]cheap auto insurance quotes[/url]

  20. car insurance quotes online united auto insurance free car insurance quotes [url=https://carinsurancequotesonline.us.com]cheapest car insurance quotes[/url]

  21. A person necessarily lend a hand to make significantly posts I would state.
    This is the very first time I frequented your website page and so far?
    I surprised with the analysis you made to create this particular submit amazing.
    Fantastic task!

  22. Wow, awesome blog layout! How long have you been blogging for?

    you make blogging look easy. The overall look of your web site is excellent, as well as the content!

  23. advance payday payday advances loans lenders only [url=https://payday-advance.us.com]advance payday[/url]

  24. fascik homesite » Skrypty .BAT, .CMD, .VBS
    [url=http://www.gdy10by1kve95a789dv89dbx0j9075q8s.org/]ugemmvdsg[/url]
    gemmvdsg http://www.gdy10by1kve95a789dv89dbx0j9075q8s.org/
    agemmvdsg

  25. auto insurance commercial auto insurance best auto insurance companies 2018 [url=https://autoinsurance2018.us.com]amica auto insurance[/url]

  26. polyphenols polyphenols polyphenol supplements [url=https://polyphenols.us.com]dr. gundry’s diet[/url]

  27. florida auto insurance auto insurance auto insurance [url=https://autoinsurance2018.us.com]best car insurance companies 2018[/url]

  28. I’ve been surfing online more than three hours today, yet I never found any interesting
    article like yours. It is pretty worth enough for me. In my opinion, if all site
    owners and bloggers made good content as you did, the internet will be much more useful than ever before.

  29. Can I simply say what a comfort to uncover someone that genuinely
    understands what they are discussing over the internet. You
    actually realize how to bring a problem to light and make
    it important. More people ought to look at this and understand this side of the story.
    I was surprised you’re not more popular since you most certainly have the gift.

  30. Link exchange is nothing else except it is only
    placing the other person’s website link on your page at proper place and other person will also do same for you. https://www.24hourwristbands.ca

  31. Ⅰ am regular reader, hoա aгe yоu еverybody? Ƭhis post posted at this website is truly goօd.

  32. When someone writes an paragraph he/she retains the thought of a user in his/her brain that how a user can be
    aware of it. Thus that’s why this paragraph is great.

    Thanks!

    Check out my web-site; persuasive essay outline

  33. esurance auto insurance auto insurance low cost auto insurance [url=https://autoinsurance2018.us.com]florida auto insurance companies[/url]

  34. metabolism metabolism metabolism [url=https://metabolism.us.com]metabolism[/url]

  35. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
    You definitely know what youre talking about, why waste your intelligence on just
    posting videos to your blog when you could be
    giving us something informative to read?

  36. write essay for me pay for essay essay for me [url=https://essayforme.us.com]essay for me[/url]

  37. I’ll immediately grab your rss as I can’t to find your email subscription link or e-newsletter service.
    Do you’ve any? Please permit me know in order that I may just subscribe.
    Thanks.

    Also visit my web site: university assignment grade boundaries

  38. polyphenols food foods high in polyphenols list polyphenols foods list [url=https://polyphenolsfoods.us.com]metabolism[/url]

  39. top rated auto insurance companies 2018 low cost auto insurance low cost auto insurance [url=https://autoinsurance2018.us.com]auto insurance[/url]

  40. Many thanks for helping people find the information they need. Good stuff as usual. Keep up the great work!!!

  41. I like to get my inspiration from really meaningful phrases said by truly great people like “Even while they teach, men learn”, do you know where I can find thematic compiltaions of those?

    [url=http://zelda.se/2018/01/12/custom-made-posting-company-buy-specialized/]http://zelda.se/2018/01/12/custom-made-posting-company-buy-specialized/[/url]

  42. I love all your posts. You have done really good job
    [url=http://wanturfeedback.com/2017/11/24/custom-essay-writing-service-ideal-custom-writings/]http://wanturfeedback.com/2017/11/24/custom-essay-writing-service-ideal-custom-writings/[/url]

  43. I like to get my inspiration from really meaningful phrases said by truly great people like “Everything that exists is born for no reason, carries on living through weakness, and dies by accident”, do you know where I can find thematic compiltaions of those?

    [url=http://golubmaryna.com/purdue-owl/]http://golubmaryna.com/purdue-owl/[/url]

  44. I have discovered plenty of useful information on your site this page in particular. Thank you for posting.
    [url=http://www.altitudetexas.com/2017/11/08/gs-201-introduction-to-interdisciplinary-methods/]http://www.altitudetexas.com/2017/11/08/gs-201-introduction-to-interdisciplinary-methods/[/url]

  45. I like to get my inspiration from really meaningful phrases said by truly great people like “Philosophers have hitherto only interpreted the world in various ways; the point, however, is to change it”, do you know where I can find thematic compiltaions of those?

    [url=http://pmgajidesigns.com/25-innovative-university-or-college-dissertation/]http://pmgajidesigns.com/25-innovative-university-or-college-dissertation/[/url]

Zostaw odpowiedź