Skocz do zawartości




Zdjęcie

Zapętlenie pliku bat


  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

Katalogi.pl

Katalogi.pl
  • Bywalec

#1 TJM

TJM

    BOINC@Poland

  • Validating
  • PipPipPip
  • 16630 postów

Napisano 05 wrzesień 2005 - 15:27

Mam taki dość problematyczny problem - potrzebuję zrobić plik bat będący mniej więcej odpowiednikiem czegoś takiego z linuksa:

while :; do
sleep 10

done

czyli inaczej mówiąc pętla z wstawioną pauzą. Nie wiem jak zrobić taką pętlę w pliku bat pod windowsem , nie wiem też czy jest jakiś odpowiednik polecenia sleep. Zaraz będę szukał na goglach ale w międzyczasie założyłem posta może akurat ktoś podpowie



Zmieniony przez - TJM w dniu 2005-09-05 16:27:55

#2 x-ray

x-ray

    1

  • Members
  • PipPipPip
  • 230 postów

Napisano 05 wrzesień 2005 - 16:11

http://www.pldos.pl/...likiwsadowe.htm

Jak znajde czas to sie pobawie. Juz nie pamietam, kiedy ostatni raz pisalem batche, autoexecki i configi. Masz tu liste wsystkich komend:

ASSOC - wyświetla lub modyfikuje skojarzenie rozszerzeń plików.
AT - planuje wykonanie poleceń i programów.
ATTRIB - wyświetla lub zmienia atrybut pliku.
BREAK - wyłącza lub włącza rozszerzone sprawdzanie klawiszy CTRL +C.
CACLS - wyświetla lub modyfikuje listy kontroli dostępu (ACL) plików.
CALL - Wywołuje jeden program wsadowy z inego.
CD - wyświetla lub zmienia nazwę bieżącego katalogu.
CHCP - wyświetla lub ustawia numer aktywnej stronie kodowej.
CHDIR - wyświetla lub zmienia nazwę bieżącego katalogu.
CHKDSK - sprawdza dysk i wyświetla raport o jego stanie.
CHKNTFS - wyświetla lub modyfikuje stan sprawdzania dysku przy rozruchu.
CLS - czyści ekran.
COLOR - ustawia domyślny kolor tła i pierwszego planu konsoli.
COMP - porównuje zawrtość dwóch plików lub zestawów plików.
COMPACT - wyświetla i pozwala na modyfikację listy plików skompresowanych na partycji NTFS.
CONVERT - konwertuje wolumin FAT na wolumin NTFS. Nie może konwertować bieżącego dysku.
COPY - kopiuje jeden lub wiele plików w inne miejsce.
DATE - wyświetla lub ustawia datę.
DEL - usuwa jeden lub wiele plików.
DIR - wyświetla listę plików i podkatalogów katalogu.
DISKCOMP - prównuje zawrtość dwóch dyskietek.
DISKCOPY - kopiuje zawartość jednej dyskietki na drugą.
DOSKEY - edytuje wiersze poleceń, przywraca polecenia Windows, tworzy makra.
ECHO - wyświetla komunikaty lub włącza i wyłącza echo poleceń.
ENDLOCAL - kończy lokalne zmiany środowiska w plikach wsadowych.
ERASE - usuwa jeden lub wiele plików.
EXIT - kończy działanie programu CMD.EXE (interpretatora poleceń).
FC - porównuje dwa pliki lub zestawy plików i wyświetla różnice między nimi.
FIND - wyszukuje ciąg tekstowy w pliku lub plikach.
FINDSTR - wyszukuje ciągi znaków w plikach.
FOR - uruchamia podane polecenia dla każdego pliku z zstawu plików.
FORMAT - formatuje dysk do użytku w systemie Windows.
FTYPE - wyświetla i modyfikuje typy plików używane w skojarzeniach rozszerzeń plików.
GOTO - przekazuje sterpwanie interpretatora poleceń systemu Windows do wiersza o podanej etykiecie w pliku wsadowym.
GRAFTABL - włącza wyświetlanie przez sysytem Windows znaków rozszerzonych w trybie graficznym.
HELP - podaje informacje o poeceniach sysytemu.
IF - dokonuje warunkowego przetwarzania w plikach wsadowych.
LABEL - tworzy, zmienia lub usuwa etykietę (etykiety) woluminu dysku.
MD - tworzy katalog.
MKDIR - tworzy katalog.
MODE - konfiguruje urządzenia systemowe.
MORE - wyświetla informacje strona po stronie.
MOVE - przenosi jeden lub wiele plików z jednego katalogu do drugiego.
PATH - wyświetla lub ustawia ścieżkę przeszukiwania dla plików wykonywalnych.
PAUSE - wstrzymuje przetważanie pliku wsadowego i wyświetla komunikat.
POPD - parzywraca katalog zapisny przez PUSHD.
PRINT - drukuje plik tekstowy.
PROMPT - zmienia znak zachety wiersza poleceń.
PUSHD - zapisuje bieżący katalog a następnie zmienia go.
RD - usuwa katalog.
RECOVER - odzyskuje możliwe do odczytania informacje z uszkodzonego dysku.
REM - oznacza komentarze w pliku wsadowym lub pliku CONFIG.SYS.
REN - zmienia nazwę plku lub plików.
RENAME - zmienia nazwę pliku lub plików.
REPLACE - zamienia pliki.
RMDIR - usuwa katalog.
SET - wyświetla, ustawia lub usuwa zmienne środowiskowe systemu.
SETLOCAL - rozpoczyna lokalne zmiany środowiska w plikach wsadowych.
SHIFT - zamienia pozycje parametrów w pliku wsadowym.
SORT - sortuje wprowadzone dane.
START - uruchamia program lub polecenie w oddzielnym oknie.
SUBST - przypisuje ścieżce literę dysku.
TIME - wyświetla lub ustawia czas systemowy.
TITLE - ustawia tytuł okna dla sekcji CMD.EXE.
TREE - wyświetla strukturę katalogów dysku lub ścieżki.
TYPE - wyświetla zawartość pliku tekstowego.
VER - wyświetla wersję systemu.
VERIFY - instrułuje sysytem, aby sprawdzić poprawność zapisu plików na dysku.
VOL - wyświetla etykietę oraz numer seryjny dysku.
XCOPY - kopiuje pliki i katalogi.

Zmieniony przez - x-ray w dniu 2005-09-05 17:21:04

#3 Misiekd

Misiekd

    1

  • Moderators
  • 7119 postów

Napisano 05 wrzesień 2005 - 19:30

jedyna pętla w dosie to for, wpisz sobie for /? w cmd to będziesz miał pełen opis. Nie wiem, czy da się ją zrobić nieskończoną.
Co do sleep to nic takiego w dosie nie ma (jest pause, ale to czeka na naciśnięcie czegoś)

#4 TJM

TJM

    BOINC@Poland

  • Validating
  • PipPipPip
  • 16630 postów

Napisano 05 wrzesień 2005 - 21:07

No czyli dos to kapa w takim razie
Na upartego mógłbym zapętlić skrypt wywołując go ponownie w nim samym, teoretycznie to żaden problem ale czy nie spowoduje to jakichś problemów typu zżeranie zasobów ? W końcu pierwszy skrypt nie zakończy się do czasu aż nie zakończy się wywołany w nim drugi, który z kolei nie zakończy się dopóki nie skończy działać wywołan w nim trzeci itd.
Tymczasowo poradziłem sobie dodając bat do harmonogramu zadań, ale to rozwiązanie odpada - wyskakuje mi za każdym razem nowe okno konsoli przy wywołaniu skryptu, nawet jeśli wpiszę @echo off na początku skryptu i wszystkie komendy mają wyjście przekierowane do pliku. Poza tym to okno nie może i tak wyskakiwać, skrypt ma za zadanie działać w tle pod aplikacją któa zamyka się sama jeśli wyskoczy jakieś nowe okno.
Konkretnie chodzi mi o to żeby co jakiś czas - w założeniu co 5 minut wywołać polecenie "netstat >Z:info.txt" żeby spod linuksa widzieć połączenia na windzie - Z: to zmapowany dysk sieciowy. Dalszą obróbką informacji zajmie się skrypt powłoki na linuksie, tam 10 razy łatwiej napisać hrhr.
Może ktoś znajdzie lepsze rozwiązanie niż zapętlony bat ?
Próbowałem dodawać samo netstat >Z:info.txt bepośrednio w harmonogramie ale nie daje rady tym sposobem, w ogóle się nie odpala polecenie nie mówiąc już o zapisywaniu danych do pliku.
Myślałem jeszcze nad jakimś programem nawet od biedy napisanym w pascalu, w końcu wywołanie zewnętrznego polecenia to żaden problem podobnie jak i czekanie określony czas.


Zmieniony przez - TJM w dniu 2005-09-05 22:11:09

#5 x-ray

x-ray

    1

  • Members
  • PipPipPip
  • 230 postów

Napisano 05 wrzesień 2005 - 21:20

Sorry TJM, ze zapytam. To nie lepiej jest tobie napisac ten program w jezyku sktyptowym Windowsa?
A pod dos'em nieskonczona petla na "For" i errorlevel'ach jest do zrobienia. Wystarczy, ze petla ma sie wykonywac dopuki nie zostanie wcisniety jakis klawisz.

Zmieniony przez - x-ray w dniu 2005-09-05 22:23:49

#6 TJM

TJM

    BOINC@Poland

  • Validating
  • PipPipPip
  • 16630 postów

Napisano 05 wrzesień 2005 - 21:49

hrhr problem już rozwiązany przy pomocy instrukcji goto i znalezionego w googlach programiku sleep.exe




Similar Topics Collapse

  Temat Forum Autor Podsumowanie Ostatni post


Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych


Inne serwisy: IFD