C:\>set g=/?
C:\>echo %g%
Displays messages, or turns command-echoing on or off.
ECHO [ON | OFF]
ECHO [message]
Type ECHO without parameters to display the current echo setting.
C:\>
jeśli ustawię g = "/?" następnie echo% g%, następnie zawiera cudzysłowy.
Chcę tylko /? bez cudzysłowów, kiedy wykonuję echo% g%, powinno po prostu powiedzieć /?
Bez większego powodu. Ale tego chcę. Mam nadzieję, że jest to możliwe.
Aby tekst był wyświetlany jako wynik, nawet jeśli jest to słowo ON, słowo OFFlub sekwencja opcji, użyj niesławnej sztuczki echo-kropka . Zamiast echopolecenia użyj echo.polecenia.
C:\>set g=/?
C:\>echo. %G%
/?
C:\>echo. on
on
C:\>echo.%G%
/?
C:\>
Zwróć uwagę na dziwne zachowanie w echo.odniesieniu do oddzielania białych znaków oraz w odniesieniu do tego, jak parser wiersza poleceń wykrywa koniec nazwy polecenia. Jeśli posiadasz TCC / LE JP Software , możesz oczywiście nadal używać tej dość wątpliwej składni, która ma swoje korzenie w MS-DOS, COMMANDgdzie kilka znaków interpunkcyjnych oprócz białych znaków to znaki „kończące”, ale o wiele lepiej jest użyć bardziej regularna natywna składnia TCC, między innymi dlatego, że zachowuje zwykłe białe znaki jako separator między nazwą polecenia a ogonem polecenia:
[C:\]set g=/?
[C:\]echo ``%G%
/?
[C:\]
Natywna składnia TCC nie zapobiegnie jednak oni nie offzostanie specjalnie rozpoznana. Do tego nadal potrzebujesz echo.polecenia.
W CMD echo(może być czasem konieczne - ktoś wykonał test i echo.%var%może zderzyć się z nazwą pliku itd.
grawity
@grawity ciekawy link, więc echo.% var% koliduje, jeśli masz plik o nazwie echo w tym katalogu! Ale jak zrobiłbyś echo% bb%, gdybyś miał zmienną o nazwie bb i nie chciałeś, aby wyświetlała zawartość bb? ale dosłownie% bb%. Widzę echo.% Bb% lub echo /% bb% lub echo% bb% wszystkie mają problem.
barlop
@barlop: Spróbuj echo ^%bb^%i echo %%bb%%jeden z nich powinien działać.
grawity
@gravvity co z! bb! ?
barlop
@barlop echo ^^! bb ^! nie znam mechaniki, dlaczego uniknięcie pierwszego wykrzyknika nie zrobiło tego, ale dwukrotnie, ale i tak.
barlop
2
Właściwie to działa tak, jak jest. :)
Gdy ustawisz „g” na „/?” a następnie echo %g%pisz echo /?, co piszesz , co (tak jak powinno) zapewnia pomoc w wyświetlanym echu („Wyświetla wiadomości lub włącza lub wyłącza echo poleceń ...”).
Jeśli wpiszesz echo test%g%, otrzymasz zwrot test/?.
Właściwie set g=/?to jest poprawne. Problemem jest /? oznacza coś specjalnego dla cmd.exe. Oznacza pokaż pomoc dla polecenia. Na przykład spróbuj dir /?. Lub w twoim przypadku echo /?.
Uruchom, set ga zobaczysz, że g jest rzeczywiście ustawiony na /?
Tak więc po uruchomieniu echo %g%naprawdę działa, echo /?co każe cmd.exe wydrukować komunikat pomocy.
nie testowałeś tego, prawda? Spróbuj echo% b% po. W każdym razie znakiem ucieczki w cmd jest ^ i zauważ, że zestaw g = ^ /? jest taki sam jak zestaw g = /?
echo(
może być czasem konieczne - ktoś wykonał test iecho.%var%
może zderzyć się z nazwą pliku itd.echo ^%bb^%
iecho %%bb%%
jeden z nich powinien działać.Właściwie to działa tak, jak jest. :)
Gdy ustawisz „g” na „/?” a następnie
echo %g%
piszecho /?
, co piszesz , co (tak jak powinno) zapewnia pomoc w wyświetlanym echu („Wyświetla wiadomości lub włącza lub wyłącza echo poleceń ...”).Jeśli wpiszesz
echo test%g%
, otrzymasz zwrottest/?
.źródło
Właściwie
set g=/?
to jest poprawne. Problemem jest /? oznacza coś specjalnego dla cmd.exe. Oznacza pokaż pomoc dla polecenia. Na przykład spróbujdir /?
. Lub w twoim przypadkuecho /?
.Uruchom,
set g
a zobaczysz, że g jest rzeczywiście ustawiony na /?Tak więc po uruchomieniu
echo %g%
naprawdę działa,echo /?
co każe cmd.exe wydrukować komunikat pomocy.źródło
Wystarczy uciec od „
/
” - więc spróbuj:źródło