znalazłem ten program http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/Co oznacza :: (podwójny dwukropek) w plikach wsadowych DOS?
Ale nie wiem, co robi linia
:: datetime.bat
w końcu chodzi?
znalazłem ten program http://baiyunmanor.com/blog/work/get-current-date-time-in-dos-batch-file/Co oznacza :: (podwójny dwukropek) w plikach wsadowych DOS?
Ale nie wiem, co robi linia
:: datetime.bat
w końcu chodzi?
::
(zwana także etykieta komentarza) to komentarz tak samo jak REM
.
Pomiędzy nimi występują pewne różnice. Główne z nich to:
ECHO ON
REM
linia pokazał ale nie linia skomentował z ::
::
można wykonać daszek końcowy linii (to jest ^
na końcu linii zaczynając ::
powoduje, że następny wiersz również jest komentarzem).::
mają specjalną logikę i mogą powodować problemy w blokach nawiasów - należy zachować ostrożność podczas korzystania z nich wewnątrz (
)
.Linia zaczynając od dwukropka jest znacznikiem, który można przejść do z goto
:
goto end
:end
Linia wychodząc z podwójnym dwukropku to etykieta, chyba nie można, nawet przypadkowo, przeskocz do niego:
goto :end REM this doesn't work
::end
Tak więc dwukrotny dwukropek służy do komentowania linii.
dwukropek (:) jest markerem etykieta i może być stosowany do dostali instrukcje.
Niektórzy używają: jako komentarz zbyt więc podwójny dwukropek jest po prostu stylistyczny oświadczenie REM
linii, która rozpocznie się w podwójnym dwukropkiem oznaczają nieprawidłową etykietę że jest ignorowany przez procesor poleceń, więc może użyć, aby wstawić komentarz. Z przyczyn, których nie można zidentyfikować, wiele osób używa ::
do wstawiania komentarzy w plikach wsadowych, ale musisz mieć świadomość, że w jego użyciu jest kilka pułapek opisanych w linku podanym w odpowiedzi Koterpillar. Wydaje się, że pierwsze użycie polecenia ::
zamiast polecenia REM
miało na celu przyspieszenie wykonywania plików wsadowych na wolnych komputerach (np. Dyskietkach), ale ten powód nie jest uzasadnionym uzasadnieniem użycia dwukropka, ponieważ wiele Lata temu.
Każda linia zawierająca niepoprawną etykietę zostanie zignorowana przez procesor poleceń, a do wygenerowania nieprawidłowej etykiety można użyć praktycznie dowolnego znaku specjalnego.Na przykład:
@echo off
:~ This is a comment
:` This is a comment
:! This is a comment
:@ This is a comment
:# This is a comment
:$ This is a comment
:% This is a comment
:^ This is a comment
:& This is a comment
:* This is a comment
:(This is a comment
:) This is a comment
:_ This is a comment
:- This is a comment
:+ This is a comment
:= This is a comment
:{ This is a comment
:} This is a comment
:[ This is a comment
:] This is a comment
:| This is a comment
:\ This is a comment
:: This is a comment
:; This is a comment
:" This is a comment
:' This is a comment
:< This is a comment
:> This is a comment
:, This is a comment
:. This is a comment
:? This is a comment
:/ This is a comment
echo OK
Innymi słowy: jeśli chcesz wstawić komentarz i nie chcesz użyć komendy REM
(choć nie mogę wymyślić żadnego powodu, aby to zrobić), masz 32 możliwych kombinacji znaków aby to zrobić. Dlaczego powinieneś używać właśnie tego: ::
? Tylko dlatego, że zrobiły to stare programy napisane 35 lat temu?
W ogóle masz rację (prawie zawsze), ale nie rozumiem, dlaczego stworzyłeś tę listę? '" ~ ''! @ # $ %% *() _- {} [] \ '.?/^ & | <> 'są etykietami prawnymi, tylko' + =,;:
@jeb: Chcę tylko, aby czytelnik zrozumiał, że użycie '' 'do wstawiania" komentarzy "nie ma uzasadnionej podstawy. – Aacini
Ponieważ nie możesz wymyślić powodów, dam ci dwa: ** czytelność ** ('' 'wyróżnia się jako nie-alfabetyczny w większości znaków alfabetycznych w skrypcie wsadowym ... a jeśli pochodzisz z C++, gdzie' // 'jest komentarzem w jednym wierszu,' :: 'w pewnym sensie ma sens w tym samym celu) i ** oszczędzając miejsce ** (jeśli kiedykolwiek przekroczyłeś górny limit - gdzieś poniżej 60 kB - ze skryptem docenisz możliwość zapisania bajtów ... i tak, są także dobre powody dla tak dużych monolitycznych skryptów) – 0xC0000022L
Jak wspomniano przez acdcjuniorEtykiety i ::
mają specjalną logikę i mogą powodować problemy w blokach nawiasie
Oto kilka próbek
Próbka 1
IF 1==1 (
::
)
Wyjście próbki 1
) was unexpected at this time.
Próbka 2
IF 1==1 (
::
::
)
Wyjście próbki 2
The system cannot find the drive specified.
Kiedy przytoczyć, że '' :: "jest również nazywany _comment label_" powinien zawierać link do źródła _official_ gdzie Zrozumiałeś cytować; w przeciwnym razie przyczyniasz się do rozpowszechniania popularnych przekonań, które mogą być błędne. – Aacini
Najważniejszą różnicą jest specjalna logika wewnątrz bloków nawiasów. Byłoby wspaniale, gdyby można dodać zasób, aby uzyskać więcej informacji na ten temat. – McK
Obsługa w blokach jest opisana w [SO: polecenie goto nie działa] (http://stackoverflow.com/a/4006006/463115) i więcej na temat [SO: Który styl komentarza powinienem używać w plikach wsadowych?] (http://stackoverflow.com/a/12408045/463115) – jeb