1
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:\>

если я установлю g = "/?"тогда эхо% g%, тогда оно включает кавычки.

Я просто хочу /? без кавычек, когда я делаю эхо% g%, это должно просто сказать /?

Нет большей причины. Но это то, что я хочу. Надеюсь, это возможно.

4 ответа4

4

Чтобы текст выводился на экран как вывод, даже если это слово ON , слово OFF или последовательность опций, используйте печально известный трюк с эхо-точкой . Вместо команды echo используйте echo. команда.

C:\>set g=/?

C:\>echo. %G%
 /?

C:\>echo. on
 on

C:\>echo.%G%
/?

C:\>

Обратите внимание на странное поведение echo. относительно разделения пробелов и относительно того, как анализатор командной строки обнаруживает конец имени команды. Если у вас есть программное обеспечение JP Software TCC/LE, вы, конечно, все еще можете использовать этот довольно сомнительный синтаксис, который берет свое начало в MS-DOS COMMAND где несколько знаков препинания в дополнение к пробелу были символами "завершения", но гораздо лучше использовать более регулярный собственный синтаксис TCC, не в последнюю очередь потому, что он сохраняет обычные пробелы в качестве разделителя между именем команды и хвостом команды:

[C:\]set g=/?

[C:\]echo ``%G%
/?

[C:\]

Однако собственный синтаксис TCC не помешает тому, чтобы on и off распознавалось специально. Для этого вам все еще нужно echo. команда.

2

На самом деле это работает как есть. :)

Когда вы устанавливаете "g", чтобы быть "/?«и затем введите echo %g% вы на самом деле вводите echo /? , что (как и должно быть) дает вам помощь по отображаемому эхо-сигналу («Отображает сообщения или включает или выключает отображение команд ...») ,

Если вы введете echo test%g% вы получите test/? вернулся.

1

На самом деле set g=/? верно. Проблема в том, что /? означает что-то особенное для cmd.exe. Это означает показать справку для команды. Например попробуйте dir /? , Или в вашем случае echo /? ,

Запустите set g и вы увидите, что g действительно установлен в /?

Итак, когда вы запускаете echo %g% вы действительно запускаете echo /? который говорит cmd.exe распечатать сообщение справки.

0

Просто избегайте ' / ' - так что попробуйте:

C:\>set g=\/?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .