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: 988 do “Skrypty .BAT, .CMD, .VBS”

  1. no kurcze nie ma zadnego madrego ktory oswieci mnie jak to zrobic??? ….. jak cos na windowsie….. xp sp3 prof.

  2. Ten przykład co podałeś nie jest żadnym skryptem wykorzystywanym w jakiejkolwiek wersji Windows’a.

    Bez zewnętrznych programów się nie obejdzie.

    Ps. Tak z ciekawości po co ci obsługa dwóch kursorów?

  3. hmm.. pisza ze to skrypt..i wiem ze to dziala .. ale nie mam pojecia jak to odpalic.. a 2 kursory mi sa potrzebne….gram sobie w taka gierke…puszczam bota .. i ten bot centralnie kozysta z kursora,,, czyt.. jak on lata nic nie mozna w tym czasie robic przy komputerze.. bo on korzysta z kursora.. dlatego potrzebuje 2,, 1 dla niego.. 2 dla siebie (btw programiki typu team player na 2 myszki nie pomagaja )

  4. Witam,
    zna ktoś może sposób na to, aby przy otworzeniu każdego pliku z danym rozszerzeniem (np. mp3 albo exe obojętne) włączał się dodatkowo skrypt .bat?? chodzi o to, aby włączył się normalnie i ten plik z rozszerzeniem i bat.
    PS. Próbowałem coś z ftype i exefile ale nie wszystkie pliki exe się włączają.

  5. Paweł do tego celu używa się programów tzw “binder’ów”. Służą one do łączenie różnych typów plików w jeden.

  6. Niezupełnie o to mi chodziło. Tak jak powiedziałeś bindery służą do łączenia różnych plików w jeden. Lecz abym osiągnął swój cel musiałbym zbindować wszystkie pliki exe na kompie, a nie oto mi chodzi. Wybacz jeżeli się nie sprecyzowałem. Chodziło mi o sytuację, np. że przy każdym włączeniu jakiegokolwiek pliku exe czy to na kompie czy z pendriva bat wyświetla mi komunikat że włączono taki i taki exe, a ten program(exe) się poprostu normalnie włącza i pracuje.

  7. A z tym ftype to próbowałem tak, że gdy uruchomiono exefile to włączał się bat który jako %1 przyjmował ścieżkę exe’ka wyświetlał komunikat i włączał %1. tylko, że ta metoda nie działa dla wszystkich plików (dlaczego nie wiem) np. notatnik się włącza, a gdy włączę np. Code::Blocks to bat się “pętluje” i leci cały czas od nowa…

  8. Hej spryciarze, jak zrobić, żeby system wyliczył mi datę wczorajszą?
    Wiecie, take coś, typu datawczoraj=(datadzisiaj – 1)

    Tylko z linii poleceń cmd, a jak się nie da, to może ktoś podpowie, jak to wyliczyć prostym skryptem VBA (tu to jestem całkiem zielony) , żeby mi wynik podłożyło do zmiennej, którą mogę zastosować potem w cmd

    hmm?

  9. W samym skrypcie bat stworzenie tego jest bardzo trudne dlatego że trzeba uwzględnić nietylko wczorajszy dzień ale także miesiąc i rok przestępny.
    Linki do takiego skryptu.
    http://stackoverflow.com/questions/7412623/windows-batch-script-download-yesterday-files
    http://www.robvanderwoude.com/datetiment.php#Yesterday

    Lepszym rozwiązaniem będzie zewnętrzny program StdDate.
    Oto przykład który pokazuje i ustala wczorajszą datę do zmiennej data
    http://www.mediafire.com/?dzv7wn9yipc695w

    @echo off
    StdDate > NUL
    set /A return=%errorlevel%-1
    for /f "delims=" %%a in ('StdDate %return%') do (
    set data=%%a
    )
    echo %data%
    pause

    Napisałem ten skrypt który łączy vbs i bat i według mnie jest to najlepsze rozwiązanie ;)

    @echo off
    set dzien=%DATE:~8,10%
    set miesi=%date:~5,2%
    set rok=%date:~0,4%
    ::
    > $$$.vbs echo WScript.Echo ^("" ^& DateSerial^(%rok%, %miesi%, %dzien% -1^)^)
    ::
    for /f "tokens=*" %%t IN ('cscript.exe //NoLogo $$$.vbs') do (
    set wczoraj=%%t
    del $$$.vbs>nul
    )
    ::
    echo %wczoraj%
    pause

  10. Faktycznie, to jest najlepsze.
    Pisałem skrypt, który uruchamia mi raport w sql, czasem musi to być na danych z wczoraj, czasem z całego zeszłego tygodnia kalendarzowego, niezależnie od tego jaki mamy dziś dzień.
    W międzyczasie musiałem już sobie radzić, więc wyskrobałem na piechotę, że dostaję nazwę dnia tygodnia (skryptem vbs z tej fajnej stronki), z tego zrobiłem numer dnia w batchu, potem wyliczam ile dni mam do poprzedniego poniedzałku i poprzedniej niedzieli, a potem już wylicza mi już samo zapytanie sql, przedział dat za pomocą datediff. Strasznie to wygląda, więc tu ze wstydu nie wrzucam, ale działa.
    Ale jak mam tutaj Twoje wyliczenie dnia, to teraz to wszystko wywalę i zrobie jeszcze raz.
    Dzięki Wielkie Mistrzu.
    Również za te linki, bo też pouczające.
    Ta radość, gdy ktoś pomoże…
    Ten smak porażki, gdy sam nie umiałem…

  11. Jak mogę sprawdzić lokalizację uruchomionego pliku bat(albo innego pliku, który uruchomił cmd), widząc jedynie cmd.exe w procesach?

    Odrazu mówię (co pewnie wiecie), że otwórz lokalizację pliku pokaże mi cmd.exe :)

    Z góry dzięki

  12. Plik wsadowy o nazwie pierwszy.bat wywołujący nazwę drugi.bat który usuwa pliki bedące parametrami pliku pierwszy.bat

    copy con pierwszy.bat
    @echo off
    if “%1″==” ” goto info
    :start
    if “%1″== ” ” goto koniec
    call drugi.bat %1
    shift
    goto start
    :info
    echo brak argumentu
    :koniec
    pause

    i teraz ten drugi

    copy con drugi.bat
    del %1>NUL
    echo usunięto %1

    i jak teraz sprawdzić czy te parametry pliku pierwszy.bat są usuniete

  13. Pokazuje ścieżkę do uruchomionego pliku bat.

    @echo off & setlocal enableextensions
    echo %~f0
    pause>nul
    endlocal & goto :EOF

    Artur powinieneś zastosować if exist %1 goto dalsze polecenia.

    Ps. Dlaczego chcesz tak skomplikować sprawę używając tych dwóch plików ? ;)

  14. Dzięki e4nd!

    PS. Znalazłem jeszcze jedną metodę:

    @echo off
    echo %~dpnx0
    pause >nul

    Czym ona się różni?????

  15. Są to połączone modyfikatory zmiennej

    @echo off
    echo %~dpnx0
    echo.
    echo %~d0%~p0%~nx0
    echo.
    echo %~d0
    echo %~p0
    echo %~nx0
    pause >nul

    Drugi przykład czasami się przydaje ;)
    @echo off & setlocal enableextensions
    echo %%~f0 %~f0
    echo %%~d0 %~d0
    echo %%~p0 %~p0
    echo %%~n0 %~n0
    echo %%~x0 %~x0
    echo %%~s0 %~s0
    echo %%~a0 %~a0
    echo %%~t0 %~t0
    echo %%~z0 %~z0
    pause>nul
    endlocal & goto :EOF

    Wszystko jest opisane w “for /?”

    %~I Rozwija zmienną %I, usuwając wszelkie otaczające ją cudzysłowy ("").
    %~fI Rozwija zmienną %I do pełnej kwalifikowanej nazwy ścieżki.
    %~dI Rozwija zmienną %I tylko do litery dysku.
    %~pI Rozwija zmienną %I tylko do ścieżki.
    %~nI Rozwija zmienną %I tylko do nazwy pliku.
    %~xI Rozwija zmienną %I tylko do rozszerzenia nazwy pliku.
    %~sI Rozwija ścieżkę tak, aby zawierała tylko krótkie nazwy.
    %~aI Rozwija zmienną %I do atrybutów pliku.
    %~tI Rozwija zmienną %I do daty i godziny pliku.
    %~zI Rozwija zmienną %I do rozmiaru pliku.
    :
    %~dpI Rozwija zmienną %I tylko do litery dysku i ścieżki.
    %~nxI Rozwija zmienną %I tylko do nazwy pliku i rozszerzenia nazwy.
    %~fsI Rozwija zmienną %I tylko do pełnej nazwy ścieżki z krótkimi nazwami.
    %~dp$PATH:I Wyszukuje katalogi wymienione w zmiennej środowiskowej PATH dla zmiennej %I i rozwija do litery dysku i ścieżki pierwszego znalezionego katalogu.
    %~ftzaI Rozwija zmienną %I do wiersza wyjściowego podobnie jak w przypadku polecenia dir.

    Zapraszam na http://www.dosforum.pl/

  16. Proszę o informację w kwestii polecenia findstr
    czy zwraca ono tylko linię z wyszukiwanym tekstem czy też sam poszukiwany fragment
    Dajmy na to jeśli szukam słowa w pliku tekstowym a jest on w zdaniu (linijce) to wynik poszukiwania zwróci mi słowo czy zdanie je zawierające?
    A jeśli tylko samo słowo to jak to zrobić?

  17. Jeśli mógłbyś napisać do czego chcesz użyć findstr byłoby znacznie łatwiej ;)
    Polecenie findstr zwraca całą linijkę z szukanym ciągiem.

    Przykładowy skrypt wyszukujący wyraz “słowo” w pliku txt.
    Działa on poprzez zmienianie “tokens” na wyższy.

    @echo off & setlocal enabledelayedexpansion
    ::
    set source=plik.txt
    set string=slowo
    ::
    :loop
    set/a P+=1
    call :_for !P!
    if !P!==20 pause>nul
    goto loop
    ::
    :_for
    for /f "tokens=%1*" %%a in ('findstr "%string%" %source%') do (
    if %%a==%string% echo tokens%1 %%a
    )
    goto :EOF

    Plik.txt

    --------- slowo --------- slowo ---------
    --------- slowo --------- slowo ---------

  18. Chciałem “wyłuskać” fragment z linijki zwracanej przy użyciu toola DevCon:
    http://support.microsoft.com/kb/311272/hr

    devcon listclass diskdrive | findstr ":*"

    w powyższym przypadku to tylko przykład znalezienia i wyświetlenia samego tekstu który znajduje się zaraz za dwukropkiem.
    Domyślnie polecenie wyświetla więcej informacji, a mnie interesuje tylko fragment.
    Ale skoro polecenie zwraca całą linijkę… :(

  19. Było tak od razu napisać ;) 5 minut i gotowe
    Wyświetla zainstalowane dyski.

    @echo off
    for /f "tokens=1,2 delims=:" %%a in ('devcon listclass diskdrive') do (
    echo.%%b
    )
    pause>nul

    Przykład zasady działania powyższego skryptu

    @echo off
    (
    echo username=owner
    echo password=mypass
    )>>config.ini
    ::
    for /f "tokens=1,2 delims==" %%a in (config.ini) do (
    if %%a==username set username=%%b
    if %%a==password set password=%%b
    )
    echo %username%
    echo %password%
    pause

  20. Witam.
    mam coś takiego:
    xcopy %SystemRoot%\system32\config\AppEvent.Evt \\sciezka do zdalnego katalogu\%computername%_%Date%\Aplikacja.evt
    xcopy %SystemRoot%\system32\config\SecEvent.Evt \\sciezka do zdalnego katalogu\%computername%_%Date%\Zabezpieczenia.evt
    xcopy %SystemRoot%\system32\config\SysEvent.Evt \\sciezka do zdalnego katalogu\%computername%_%Date%\System.evt

    Dziala, ale…
    Wyedytowany plik *.evt wygląda bardzo nieczytelnie.
    Można go przy kopiowaniu zkonwertowac do *.txt

  21. Pliki evt można otworzyć i zapisać w eventvwr.msc. Lub programami:
    tracerpt
    LogParser

  22. A nie mozna od razu zmusic konsole do zapisu w txt?

  23. potrzebuje na teraz kilku skryptow:
    1. skrypt ktory zamieniaatrybut pliku podanego jako parametr ukryty
    2. skrypt ktory utworzy katalogi zgodnie z lista znajdujacych sie w pliku lista.txt i wyswietli drzewo tych katalogow\
    3.skrypt ktory przy kazdym wywolaniu bedzie dopisywal liste plikow z rozszerzeniem *.bat

    Za pomoc dziekuje

  24. Ad.1

    attrib +h "Plik"

    Ad.2

    @echo off
    ::
    for /f "delims=" %%? in (lista.txt) do (
    if not exist %%? md %%?
    for %%! in (%%?) do echo %%!
    echo -==-==-==-==-
    )
    pause>nul

    Ad.3

    dir *.bat /s /b >>lista_plikow.txt

    Maciek zainstaluj program LogParser można tam zdalnie pobierać logi.
    Przykład zapisujący log w pliku csv.

    LogParser.exe -fullText:OFF -o:CSV -tabs:OFF "SELECT * INTO output.csv FROM \\SERVER2\System, \\SERVER2\Application, \\SERVER2\Security"

  25. Mam pytanie o składnię %time:~0,2% itp.
    Co to jest to :~ ?

    Próbowałem szukać w google, ale to za krótki skrót, widzę tu też przykłady z liczbami ujemnymi i np. %time:~-2% zwróci ostatnie 2 cyfry czyli setne sekundy.
    I ogólnie chodzi mi też o inne operatory | || itp. żeby wiedzieć jak to działa.

    Odnośnie skryptu: “Monitor prędkości połączenia sieciowego”
    To się powinno “zawiesić” po 2GB danych. Napisałem sobie skrypt bazujący na tym i siada po ok. 2 100 000 000 bajtów z błędem, o 32-bitowej precyzji i teraz chcę to poprawić, po prostu wytnę ostatnie np.6 cyfr i starczy (problem że jedna liczba może mieć 9 a druga 10 cyfr).

  26. Witam,

    Mam pytanie: jak ze ścieżki
    c:\work\mama\puls\cos\cos2\plik
    zapamiętać do parametrów cos, cos2 i plik?
    chce skopiować “plik” do
    c:\work\mama\puls2\cos\cos2\plik następnie do
    c:\work\mama\puls3\cos\cos2\plik itd.

    W tej chwili wywołując skrypt podaje te parametry z palca, a chciałabym, aby tworzyły się ze ścieszki same.

    Z góry dziękuje za pomoc:)

  27. Powinno zadziałać ;)

    @echo off & setlocal enabledelayedexpansion
    ::
    for /f "tokens=4* delims=\" %%a in ("c:\work\mama\puls\cos\cos2\*.*") do (
    set po_plus=%%b
    )
    :loop
    ::
    set I="c:\work\mama\puls\cos\cos2\*.*"
    ::
    set/a L+=1
    ::
    if not exist c:\work\mama\puls!L! goto koniec
    copy %I% c:\work\mama\puls!L!\%po_plus%
    ::
    goto :loop
    ::
    :koniec
    cls
    pause>nul|set /p "=Brak folderu puls!L!. . ."<nul &exit(

  28. Dzięki bardzo:) Udało mi się osiągnąć cel.
    Bardzo serdecznie dziękuje ;D

  29. witam, PROSZĘ O ODPOWIEDŹ MAILEM!

    mam pytanie, jak zdefiniować pulpit, czy to podobne do “%windir%”? potrzebuję jak najszybciej, i czy “pulpit” da się zdefiniować w szybszy sposób niż (np.) : C:/documents and settings/all users . ponieważ potrzebuję żeby skrypt definiował dla obecnego urzytkownika jego pulpit, czyli ten kto otworzył ten ma wynik (nie będę tego wszystkiego opisywał bo trochę tego jest :) np. plik txt na swoim pulpicie. POTRZEBUJĘ TEGO JAK NAJ SZYBCIEJ!!!!!!! dziękuję i pozdrawiam :)

  30. Na górze jest ładny czerwony napis, więc nie wymagaj że ktoś odpowie. Pomocy można szukać na dostips.com/, bo niestety Kotsai zamkną dosforum.pl :(

    Poniżej odpowiedź na twoje pytanie

    %UserProfile%\Pulpit\jakiś plik.txt

  31. e4nd :) Dzięki wielkie za Twoją pomoc przy odpowiadaniu na pytania.

    Tak napisałem wcześniej – nie zamierzam dalej rozwijać zarówno tego działu jak i strony. Powód jest prozaiczny – brak czasu. Choć “batche” powoli odchodzą do lamusa na rzecz PS-a to czasami skryptuję na własne potrzeby.

    Mam nadzieję, że zrozumiecie moją decyzję.

    Piotrek Romański

  32. Tylko nie kasuj strony – wiesz jak ciężko znaleźć coś o BATach teraz na necie?

  33. llelewel – strona zostaje :) Bez obaw.

  34. Witam,

    Jak zapewne wiecie w zasadach grupy w Win7 by wykonać komendy w trakcie logowania lub wylogowania z pliku muszą one być napisane w formie skryptu.

    W związku z tym mam pytanie czy ktoś ma jakiś automat by z pliku CMD automatycznie przekonwertować zawartość do VBS lub powershella? ów CMD jest dość długi i skomplikowany i po za normalnymi komendami “dosowskimi” typu if, copy del, md, set itd. również wykonuje pliki wykonywalne exe ze zwrotem kodu błędu. Jak pomyślę, o tych 200 linijkach które są w owym cmd i że mam je od początku ręcznie napisać w vbsie to efekt jest taki że zabieram się do tego od pół roku.

    Pozdrawiam.

  35. Czy mógłby mi ktoś napisać kilka (lub więcej) linijek kodu, które zapisane w rozszerzeniu .bat będą ukrywać plik ol.vbs i ol.bat, które są w C:/Users/ i dodawać ol.vbs do autostartu?
    Z góry dziękuję

  36. Witam serdecznie wśród Szanownych znawców tematu pisania skryptów bat oraz cmd.

    Potrzebuję skryptu, który robiłby coś takiego:
    Kopiuje cały katalog baza (wszystkie dane podkatalogi i pliki) znajdującego się na dysku “Z” do katalogu na dysku “F”.
    Katalog po skopiowaniu danych miałby mieć nazwę w formacje – Twojego skryptu umieszczonego na stronie.
    Po skopiowaniu danych zapisywałby do pliku log wszystkie informacje (ile skopiowano katalogów i plików).
    Po skopiwanu danych zamyka system W7.
    Bardzo Was proszę o pomoc i z góry dziękuję.

  37. Piszę z głowy więc może nie zadziałać.
    @echo off
    ::
    set zrodlo=F:\BATCH\NAJLEPSZYE\_SIECIOWE
    set cel=%userprofile%\Pulpit\cel
    set log=log.txt
    ::
    xcopy /E "%zrodlo%" "%cel%" >> %log%
    ::
    for /f "delims=" %%a in ('dir "%cel%" /a:d /b /s') do set /a c+=1
    echo Liczba skopiowanych katakog˘w: %c% >> %log%
    shutdown /s

  38. Witam. Chce napisać skrypt który będzie zmieniał nazwe komputera lokalnie komputerów będących w domenie. Musi działać w ten sposób że użytkownik odpali skrypt/lub zostanie odpalony automatycznie podczas uruchamiana komputera i zmieni nazwe komputera automatycznie pobierając nową z pliku lub poprosi o wpisanie przez użytkownika nowej nazwy. Musi dzialac na XP i win7. Problem polega na tym że nie moge znalesc polecenia w cmd ktore mi zmieni nazwe komputera. Probowałem używać poleceń ‘set’ i ‘wmic’ ale po restercie komputera wraca do poprzedniej nazwy. Czy wiecie panowie jak to rozwiązać?

Zostaw odpowiedź