你如何设置var=/?在 cmd.exe 中?

bar*_*lop 2 windows batch command-line

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:\>
Run Code Online (Sandbox Code Playgroud)

如果我设置 g="/?" 然后 echo %g% 然后它包括引号。

我只是想 /?没有引号,当我做 echo %g% 时,它应该只说 /?

没有更大的理由。但这正是我想要的。希望是可能的。

Jde*_*eBP 5

要使文本显示为输出,即使它是 word ON、 wordOFF或选项序列,请使用臭名昭著的echo dot技巧。echo使用echo.命令代替命令。

C:\>set g=/?

C:\>echo. %G%
 /?

C:\>echo. on
 on

C:\>echo.%G%
/?

C:\>
Run Code Online (Sandbox Code Playgroud)

请注意echo.关于分隔空格以及命令行解析器如何检测命令名称结尾的奇怪行为。如果您有JP Software 的 TCC/LE,您当然仍然可以使用这种相当可疑的语法,它起源于 MS-DOS COMMAND,其中除了空格之外的几个标点字符都是“终止”字符,但使用更常规的 TCC 原生语法,尤其是因为它保留了普通的空格作为命令名和命令尾之间的分隔符:

[C:\]set g=/?

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

[C:\]
Run Code Online (Sandbox Code Playgroud)

然而,TCC 的原生语法不会阻止onoff被特别识别。为此,您仍然需要该echo.命令。

  • 在 CMD 中,`echo(` 有时可能是必要的 - [有人做过测试](http://stackoverflow.com/questions/5181212/windows-in-batch-file-write-multiple-lines-to-text- file/5181213#comment-5821211),并且 `echo.%var%` 可能会与文件名冲突,等等...... (3认同)