Czy istnieje sposób na przejście przez skrypt .bat? Chodzi o to, że mam skrypt budujący, który wywołuje wiele innych skryptów i chciałbym zobaczyć, w jakiej kolejności są wywoływane, abym mógł wiedzieć, gdzie dokładnie muszę się poruszać i dodać swoje modyfikacje .
windows
batch-file
debugging
cmd
Vhaerun
źródło
źródło
Odpowiedzi:
W każdym razie nie wiem, jak przejść przez wykonanie pliku .bat, ale możesz użyć
echo
ipause
pomóc w debugowaniu.Źródło: Pomoc dotycząca plików wsadowych
@ workmad3: answer zawiera więcej dobrych wskazówek dotyczących pracy z
echo
poleceniem.Kolejne pomocne źródło ... DDB: Wskazówki dotyczące plików wsadowych DOS
źródło
Upewnij się, że w skryptach nie ma instrukcji „echo off” i wywołaj „echo on” po wywołaniu każdego skryptu, aby zresetować wszystkie pominięte.
Powodem jest to, że jeśli echo jest włączone, interpreter poleceń wypisze każde polecenie (po przetworzeniu parametrów) przed jego wykonaniem. Sprawia, że wygląda to naprawdę źle podczas używania w środowisku produkcyjnym, ale jest bardzo przydatne do celów debugowania, ponieważ możesz zobaczyć, gdzie wynik poszedł nie tak.
Upewnij się również, że sprawdzasz poziomy błędów ustawione przez wywoływane skrypty i programy wsadowe. Pamiętaj, że są do tego 2 różne metody używane w plikach .bat. Jeśli wywołałeś program, poziom błędu wynosi% ERRORLEVEL%, podczas gdy z plików wsadowych poziom błędu jest zwracany w zmiennej ErrorLevel i nie wymaga wokół niego%.
źródło
W obliczu podobnych obaw znalazłem następujące narzędzie z trywialną wyszukiwarką Google:
JPSoft " Take Command " zawiera plik wsadowy IDE / debugger. Ich krótki film prezentacyjny dobrze to pokazuje.
Korzystam z wersji próbnej od kilku godzin. Oto moja pierwsza skromna opinia:
To zasługuje na próbę.
źródło
Always quote the most relevant part of an important link
. Bez linku ta odpowiedź zniknie, co znowu prawdopodobnie jest w porządku, ale zazwyczaj tego typu sugestie ad-hoc dotyczące niesprawdzonego, zastrzeżonego oprogramowania ogólnie najlepiej pasowałyby do komentarza. Możesz to również zostawić.Znalazłem oprogramowanie „Running steps” (win32), które robi dokładnie to, czego szukałem: http://www.steppingsoftware.com/
Możesz załadować plik bat, umieścić punkty przerwania / rozpocząć przechodzenie przez niego, widząc dane wyjściowe i zmienne środowiskowe.
Wersja ewaluacyjna pozwala tylko na przejście przez 50 linii ... Czy ktoś ma darmową alternatywę o podobnej funkcjonalności?
źródło
usuń @ECHO OFF i wywołaj plik wsadowy przekierowujący WSZYSTKIE dane wyjściowe do pliku dziennika.
c:> yourbatch.bat (parametry opcjonalne)> yourlogfile.txt 2> & 1
znalezione pod adresem http://www.robvanderwoude.com/battech_debugging.php
TO DZIAŁA!! nie zapomnij o 2> & 1 ...
CZARODZIEJ
źródło
Jedyny sposób, jaki przychodzi mi do głowy, to posypanie kodu znakami
echo
s ipause
s.źródło
Czy próbowałeś przekierować wynik do pliku? Jak cokolwiek.bat> log.txt
Musisz się upewnić, że w tym przypadku każdy inny wywołany skrypt również loguje się do pliku takiego jak >> log.txt
Ponadto, jeśli umieścisz datę / T i godzinę / T na początku i na końcu tego pliku wsadowego, otrzymasz czas, który był w tym momencie i możesz zmapować czas wykonywania skryptu i kolejność.
źródło
Lub .... Wywołaj swój główny plik .bat z innego pliku .bat i wyślij wynik do pliku wynikowego, tj
runner.bat> mainresults.txt
Gdzie runner.bat wywołuje główny plik .bat
Powinieneś teraz zobaczyć wszystkie działania wykonane w głównym pliku .bat
źródło
Dość częstym problemem jest to, że skrypt wsadowy jest uruchamiany przez dwukrotne kliknięcie jego ikony. Ponieważ hostujące
cmd.exe
wystąpienie Command Prompt ( ) również kończy się wtedy, nie jest możliwe odczytanie potencjalnych wyników i komunikatów o błędach.Aby odczytać takie wiadomości, bardzo ważne jest, aby jawnie otworzyć okno wiersza polecenia, przejść do odpowiedniego katalogu roboczego i uruchomić skrypt wsadowy, wpisując jego ścieżkę / nazwę.
źródło
możesz użyć
cmd \k
na końcu skryptu, aby zobaczyć błąd. nie zamknie wiersza poleceń po zakończeniu wykonywaniaźródło
lub otwórz okno cmd, a następnie wywołaj pakiet, a dane wyjściowe pojawią się na ekranie.
źródło