Mam plik wsadowy, który uruchamia kilka skryptów Python wykonujących modyfikacje tabeli.
Chcę, aby użytkownicy komentowali skrypty 1-2 Pythona, których nie chcą uruchamiać, zamiast usuwać je z pliku wsadowego (aby następny użytkownik wiedział, że te skrypty istnieją jako opcje!)
Chcę również dodać komentarze, aby zwrócić ich uwagę, w szczególności zmienne, które muszą zaktualizować w pliku wsadowym przed jego uruchomieniem. Widzę, że mogę użyć
REM
. Ale wygląda na to, że to więcej w przypadku aktualizacji użytkownika z postępem po jego uruchomieniu.
Czy istnieje składnia umożliwiająca bardziej odpowiednie dodawanie komentarza?
batch-file
cmd
comments
comment-conventions
użytkownik1397044
źródło
źródło
Rem Sth
polecenia lub użyć tego znaku::: Sth
Odpowiedzi:
rem
Polecenie jest rzeczywiście dla komentarzy. Z natury nie aktualizuje nikogo po uruchomieniu skryptu. Niektórzy autorzy skryptów mogą jednak używać go w ten sposóbecho
, ponieważ domyślnie interpreter wsadowy wypisuje każde polecenie przed jego przetworzeniem. Ponieważrem
polecenia nic nie robią, można je bezpiecznie drukować bez skutków ubocznych. Aby uniknąć drukowania polecenia, poprzedź je znakiem@
lub, aby zastosować to ustawienie w całym programie, uruchom@echo off
. (Ma to naecho off
celu uniknięcie drukowania kolejnych poleceń;@
ma to na celu uniknięcie drukowania tego polecenia przed wprowadzeniem ustawienia echa).Tak więc w pliku wsadowym możesz użyć tego:
źródło
REM This whole line is a comment
@echo off :: This comment is inline
#
komentarzy, ponieważ#
najwyraźniej może nie być prawidłowym desygnatorem komentarza we wszystkich powłokach, które program Configure ma obsługiwać; patrz linia 3.Użyj
::
lubREM
ALE (jak ludzie zauważyli):
&
znak:your commands here & :: commenttttttttttt
IF/ELSE
,FOR
pętli itp.) Użyj,REM
ponieważ::
daje błąd.::
może zawieść w ciągusetlocal ENABLEDELAYEDEXPANSION
źródło
cd "C:\Folder" ::this throws a syntax error
git add :: blah this is not a comment
gdy „fatal: pathspec 'blah” nie pasuje do żadnych plików ”&
kod i komentarz::
. Aby to zilustrować, otwórz polecenie cmd i uruchom polecenie,dir ::blah
które nie wyświetla zawartości.
i nie porównuje z nimdir & ::blah
, co robi::
będzie skryptów błędów zsetlocal ENABLEDELAYEDEXPANSION
ifor
Nie, zwykłe stare pliki wsadowe używają
REM
jako komentarza.ECHO
to polecenie, które drukuje coś na ekranie.Aby „skomentować” sekcje pliku, których możesz użyć
GOTO
. Przykład wszystkich tych poleceń / technik:Co mogę powiedzieć? pliki wsadowe są reliktem dawno minionych czasów, są niezgrabne i brzydkie.
Możesz przeczytać więcej na tej stronie .
EDYCJA: zmodyfikowałem nieco przykład, aby zawierał elementy, których najwyraźniej szukasz.
źródło
:: zamiast REM najlepiej było używać w czasach, gdy komputery nie były bardzo szybkie. REM'ed linii są czytane, a następnie wprowadzane. :: 'ed linia jest całkowicie ignorowana. To może przyspieszyć twój kod w „dawnych czasach”. Ponadto po REM potrzebujesz spacji, po :: nie.
I jak powiedziano w pierwszym komentarzu: możesz dodać informacje do dowolnej linii, w której czujesz taką potrzebę
Jeśli chodzi o pomijanie części. Stawianie REM przed każdą linią może być czasochłonne. Jak wspomniano, używanie GOTO do pomijania części jest łatwym sposobem na pomijanie dużych fragmentów kodu. Pamiętaj, aby ustawić: LABEL w punkcie, w którym chcesz kontynuować kod.
źródło
::
irem
równo.\n
a następnie zaczyna ponownie analizować [potrzebne źródło]Komentarze wieloliniowe
Jeśli istnieje duża liczba linii, które chcesz skomentować, lepiej będzie, jeśli będziesz mógł komentować wiele linii zamiast komentować każdą linię.
Zobacz ten post Roba van der Woude na temat bloków komentarzy :
źródło
if
zamiastgoto
stackoverflow.com/q/9074476/995714 ss64.com/vb/syntax-hybrid.html stackoverflow.com/a/34512715/995714Umieszczanie komentarzy w tym samym wierszu za pomocą poleceń: użyj
& :: comment
Wyjaśnienie:
&
rozdziela dwa polecenia , więc w tym przypadkucolor C
jest to pierwsze polecenie i:: set red font color
drugie.Ważny:
To stwierdzenie z komentarzem wygląda intuicyjnie poprawnie:
ale to nie jest poprawne użycie komentarza. Działa tylko dlatego, że
goto
ignoruje wszystkie argumenty za pierwszym. Dowód jest prosty, to teżgoto
nie zawiedzie:Ale podobna próba
nie wykonaniem polecenia ze względu na nieznaną 4 argumenty do
color
polecenia:::
,grey
,on
,blue
.Będzie działać tylko jako:
Tak więc ampersand jest nieunikniony.
źródło
Możesz skomentować coś za pomocą
::
lubREM
:lub
Aby to zrobić w tym samym wierszu co polecenie, musisz dodać znak ampersand:
lub
Uwaga:
::
z zagnieżdżonych logiki (IF-ELSE
,FOR
pętle, itp ...) spowoduje błąd. W takich przypadkach użyjREM
zamiast tego.źródło
@Rado
została połączona w odpowiedzi w tym czasie i dzięki za to, po prostu wolałem inną stylizację dla odpowiedzi i użyłem innej stylizacji.To jest stary temat i chciałbym tutaj dodać moje zrozumienie, aby poszerzyć wiedzę na temat tego interesującego tematu.
Kluczowa różnica między REM a :: to:
REM to samo polecenie, podczas gdy :: NIE jest.
Możemy traktować :: jako token, który, gdy tylko parser CMD napotka pierwszą niepustą spację w linii, to :: token, po prostu pominie całą linię i przeczyta następną linię. Dlatego po REM powinien znajdować się co najmniej pusty spacja, aby mógł funkcjonować jako komentarz do linii, podczas gdy :: nie potrzebuje za nim spacji.
To, że REM jest poleceniem, można najlepiej zrozumieć na podstawie następującej składni FOR
Podstawowa składnia FOR jest następująca
tutaj
<Command>
może być dowolne prawidłowe polecenie. Możemy więc napisać następujący prawidłowy wiersz polecenia, tak jakrem
polecenieNie możemy jednak napisać następującego wiersza, ponieważ
::
nie jest to polecenieźródło
::
to (nieprawidłowa) etykieta (która wyjaśnia jej zachowanie) i dlatego nie należy jej używać (chociaż nadal jest dość powszechna)Możesz dodać komentarze na końcu pliku wsadowego za pomocą następującej składni:
Tylko upewnij się, że nigdy nie używasz zamykających nawiasów.
Uznanie autorstwa: Leo Guttirez Ramirez na https://www.robvanderwoude.com/comments.php
źródło