| Termin | Definicja |
|---|---|
| CMD nie obsługuje niektórych znaków specjalnych | CMD nie obsługuje niektórych znaków specjalnych (np. potokowania z symbolami &, |, ^) wskazuje na potrzebę ich escapowania znakiem karetki (^) w wierszu poleceń. Czym jest problem z obsługą znaków specjalnych w CMDKomunikat lub zachowanie opisane jako „CMD nie obsługuje niektórych znaków specjalnych” najczęściej nie oznacza, że sam znak jest całkowicie niedozwolony w systemie Windows. Wiersz polecenia interpretuje wybrane symbole jako elementy składni polecenia. Z tego powodu znak wpisany w nazwie pliku, parametrze, ścieżce albo tekście może zostać potraktowany jako operator sterujący, separator lub część innej konstrukcji. Do znaków, które często zmieniają znaczenie polecenia, należą między innymi W praktyce problem ujawnia się wtedy, gdy polecenie jest budowane ręcznie, kopiowane z dokumentu, uruchamiane ze skryptu albo przekazywane do programu jako argument. Jeżeli tekst zawiera znaki o specjalnym znaczeniu, konieczne może być zastosowanie właściwego sposobu cytowania lub poprzedzenie znaku karetą. Karetka pełni w CMD funkcję znaku ucieczki, czyli sygnalizuje, że następny symbol ma być potraktowany dosłownie, a nie jako element sterujący. Przykładowo tekst zawierający ampersand może wymagać zapisu Kontekst techniczny i porównanie sposobów zapisu - CMD nie obsługuje niektórych znaków specjalnychCMD działa jak interpreter poleceń, dlatego najpierw analizuje przekazaną linię, a dopiero później uruchamia wskazane narzędzie. W tej fazie rozpoznawane są operatory, przekierowania, zmienne środowiskowe i konstrukcje warunkowe. Program wywoływany przez CMD może więc otrzymać argument już zmieniony przez wcześniejszą interpretację. To ważne rozróżnienie: błąd może powstać przed uruchomieniem programu, a nie w samym programie. Najprostszą metodą ochrony całej ścieżki lub argumentu jest użycie cudzysłowów, na przykład Drugim mechanizmem jest escapowanie, czyli poprzedzanie wybranego symbolu karetą. Zapis W plikach W narzędziach uruchamianych z poziomu CMD spotyka się także polecenia, które mają własne reguły cytowania. Cudzysłowy usuwane przez interpreter mogą nie zostać przekazane do programu, a podwojenie lub poprzedzenie znaku może być wymagane przez konkretną aplikację. Poprawny zapis trzeba więc dobierać do całego łańcucha: miejsca wpisania polecenia, rodzaju skryptu, programu docelowego oraz sposobu przekazania argumentów. Typowe problemy i błędy przy znakach specjalnychJednym z częstych przypadków jest próba otwarcia, skopiowania lub usunięcia pliku, którego nazwa zawiera ampersand. Bez odpowiedniego zabezpieczenia CMD może podzielić linię na dwie części. Pierwszy fragment zostanie wykonany jako właściwe polecenie, a drugi jako osobna instrukcja. Może pojawić się komunikat o nierozpoznanym poleceniu, braku pliku albo nieprawidłowej składni. Podobne objawy występują przy nazwach zawierających pionową kreskę, nawiasy lub symbole przekierowania. Zamiast pracy na jednym pliku może dojść do przekazania wyniku do innego polecenia, zapisania danych w innym miejscu albo próby odczytu z nieistniejącego źródła. W przypadku poleceń operujących na wielu elementach dodatkowy problem może powodować połączenie znaków specjalnych z gwiazdką, znakiem zapytania lub spacjami. Błędy pojawiają się również przy kopiowaniu poleceń z przeglądarki, edytora tekstu lub komunikatora. Zwykły cudzysłów może zostać zamieniony na cudzysłów typograficzny, myślnik na dłuższą odmianę, a spacja może otrzymać niewidoczny znak. CMD nie zawsze rozpoznaje takie znaki w oczekiwany sposób. Warto sprawdzić polecenie w prostym edytorze tekstu i upewnić się, że użyto znaków ASCII odpowiednich dla danej składni. Osobną grupę stanowią skrypty wsadowe wywoływane z harmonogramu zadań, skrótu lub innego programu. W takim przypadku bieżący katalog, uprawnienia, zmienne środowiskowe i sposób interpretowania cudzysłowów mogą różnić się od ustawień podczas ręcznego uruchamiania. Polecenie działające w otwartym oknie CMD może więc zakończyć się błędem po uruchomieniu automatycznym. Nieprawidłowe escapowanie może też spowodować błąd przeciwny do zamierzonego. Nadmiarowa karetka, źle ustawione cudzysłowy albo niewłaściwe podwojenie znaku może zostać przekazane do programu jako część argumentu. Wtedy polecenie jest formalnie wykonywane, lecz program otrzymuje inną nazwę pliku, ścieżkę lub wartość parametru. Przy diagnozowaniu należy dlatego sprawdzać nie tylko sam komunikat CMD, ale także rzeczywisty tekst przekazywany do narzędzia docelowego. Kiedy trzeba zlecić diagnozę specjalistom - CMD nie obsługuje niektórych znaków specjalnychPomoc serwisowa jest uzasadniona, gdy problem ze znakami specjalnymi powtarza się w kilku poleceniach, dotyczy skryptów uruchamianych automatycznie albo uniemożliwia dostęp do plików i katalogów. Szczególnej uwagi wymaga sytuacja, w której CMD wykonuje dodatkowe instrukcje, odmawia dostępu mimo prawidłowych uprawnień lub błędnie interpretuje ścieżki po zmianie nazwy użytkownika, katalogu albo dysku. W ramach przygotowania do sprawdzenia warto zachować pełną treść polecenia, komunikat wyświetlony przez system oraz informację, czy polecenie było wpisywane ręcznie, uruchamiane z pliku W Warszawskim Pogotowiu Komputerowym 24/7 można zlecić sprawdzenie takich objawów, a darmowa diagnoza laptopa ułatwia ustalenie, czy źródłem trudności jest wyłącznie sposób zapisu polecenia, czy szerszy problem z systemem Windows. Po rozpoznaniu przyczyny można uporządkować skrypty, poprawić sposób cytowania ścieżek i zweryfikować działanie poleceń w warunkach, w których mają być rzeczywiście używane. |