| Termin | Definicja |
|---|---|
| CMD nie przekazuje parametrów do skryptu | CMD nie przekazuje parametrów do skryptu wskazuje na błędne odwołanie się do argumentów w pliku wsadowym (%1, %2 zamiast %*) lub brak cudzysłowów wokół parametrów zawierających spacje. Czym jest problem z przekazywaniem parametrów w CMDKomunikat lub sytuacja opisywana jako „CMD nie przekazuje parametrów do skryptu” oznacza, że uruchamiany plik wsadowy nie otrzymuje wartości wpisanych po jego nazwie albo korzysta z nich w sposób, który zmienia ich znaczenie. Parametrem może być ścieżka do pliku, nazwa katalogu, przełącznik działania programu, numer zadania lub dowolny tekst przekazany podczas wywołania skryptu. W środowisku Windows argumenty są dostępne w pliku Sam wiersz poleceń zwykle działa prawidłowo, lecz skrypt może odczytywać argument z niewłaściwej pozycji, pomijać go albo dzielić na kilka części. Szczególnie często występuje to wtedy, gdy parametr zawiera spacje, na przykład gdy przekazywana jest ścieżka w rodzaju Nie należy utożsamiać tego problemu z awarią samego interpretera poleceń. Przyczyną może być składnia wywołania, sposób zapisania parametrów w skrypcie, niewłaściwe użycie zmiennej, zagnieżdżenie jednego pliku wsadowego w drugim albo utrata cudzysłowów podczas przekazywania argumentów dalej. Ocena wymaga prześledzenia całego łańcucha: od polecenia wpisanego w konsoli, przez sposób uruchomienia pliku, aż po instrukcję, która wykorzystuje otrzymaną wartość. Jak CMD interpretuje argumenty i czym różnią się poszczególne odwołaniaW pliku wsadowym numerowane zmienne reprezentują argumenty według ich kolejności. Odwołanie przekazuje do skryptu dwa argumenty. Pierwszy można odczytać przez Inne znaczenie ma zapis Cudzysłowy chronią argument zawierający spacje, ale same cudzysłowy mogą pozostać częścią wartości przekazanej do polecenia. Z tego powodu istotne jest rozróżnienie między sytuacją, w której parametr ma być traktowany jako jedna ścieżka, a sytuacją, w której program docelowy oczekuje tekstu bez znaków ograniczających. Pomocne bywa konsekwentne umieszczanie zmiennych w cudzysłowach, na przykład: W tym przykładzie zapis Typowe błędy powodujące utratę lub zniekształcenie parametrówJednym z podstawowych błędów jest odwołanie do niewłaściwej pozycji. Jeżeli skrypt zostanie uruchomiony z dodatkowym przełącznikiem na początku, wszystkie późniejsze argumenty przesuwają się o jedną pozycję. Podobny efekt występuje, gdy wywołanie zostało zmienione, lecz zawartość pliku wsadowego nadal zakłada poprzedni układ danych. Warto sprawdzić pełne polecenie uruchamiające oraz tymczasowo wyświetlić wartości za pomocą Częsta pomyłka polega na użyciu Problemy mogą pojawić się również przy użyciu Znaczenie ma także opóźniona ekspansja zmiennych. W bloku otoczonym nawiasami wartość zmiennej zapisywanej i odczytywanej w tym samym przebiegu może zostać ustalona wcześniej, niż jest to oczekiwane. W takich przypadkach może być potrzebne świadome użycie składni z wykrzyknikami po włączeniu opóźnionej ekspansji, jednak wymaga to ostrożności, ponieważ wykrzyknik w przekazywanym tekście może zostać potraktowany jako część mechanizmu zmiennych. Źródłem nieporozumień bywa też uruchamianie skryptu z poziomu skrótu, harmonogramu zadań lub innego programu. Wtedy katalog roboczy może być inny niż katalog pliku, a ścieżka zawierająca spacje może zostać zapisana bez pełnego ujęcia w cudzysłowy. Warto rozdzielić test wywołania od testu zawartości skryptu: najpierw sprawdzić prosty argument tekstowy, potem ścieżkę bez spacji, następnie ścieżkę ze spacjami i na końcu wartości zawierające znaki specjalne. Kiedy trzeba skorzystać z pomocy serwisu - CMD nie przekazuje parametrów do skryptuDo serwisu warto zgłosić problem wtedy, gdy skrypt wykonuje operacje na plikach, kopiach zapasowych, konfiguracji systemu albo automatyzacji pracy, a nieprawidłowe przekazanie argumentów może prowadzić do pomijania danych lub wykonywania poleceń na niewłaściwym katalogu. Szczególnej ostrożności wymagają skrypty uruchamiane automatycznie, ponieważ błąd może pozostawać niezauważony do chwili, w której procedura wykona zadanie na niezamierzonych zasobach. Warszawskie Pogotowie Komputerowe 24/7 zajmuje się analizą takich usterek, a naprawy są zazwyczaj realizowane w ciągu do 3 dni roboczych. Przed przekazaniem sprzętu lub plików warto przygotować przykładowe polecenie uruchamiające, treść komunikatu, fragment skryptu odpowiedzialny za odczyt parametrów oraz informację, czy problem występuje w konsoli, w harmonogramie, czy tylko przy uruchamianiu z określonego skrótu. W trakcie sprawdzania można odtworzyć wywołanie w kontrolowanych warunkach, wyświetlić wszystkie otrzymane argumenty, zweryfikować cudzysłowy i przeanalizować sposób przekazywania wartości między kolejnymi plikami wsadowymi. Należy również ustalić, czy problem wynika z samej składni CMD, z lokalizacji pliku, uprawnień użytkownika, kodowania znaków lub programu, który uruchamia skrypt. Takie rozdzielenie przyczyn pozwala uniknąć przypadkowych zmian w pliku i ułatwia przywrócenie prawidłowego działania automatyzacji. |