Como você define var = /? em cmd.exe?

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

se eu definir g="/?" então echo% g% então inclui aspas.

Eu só quero /? sem aspas, quando eu faço echo% g% ele deveria apenas dizer /?

Nenhuma razão maior. Mas é o que eu quero. Espero que seja possível.

    
por barlop 13.07.2011 / 18:16

4 respostas

4

Para obter o texto a ser exibido como saída, mesmo se for a palavra ON , a palavra OFF ou uma sequência de opções, use o infame truque echo dot . Em vez do comando echo , use o comando echo. .

C:\>set g=/?

C:\>echo. %G%
 /?

C:\>echo. on
 on

C:\>echo.%G%
/?

C:\>

Observe o comportamento estranho de echo. em relação à separação do espaço em branco e em relação a como o analisador de linha de comando detecta o final do nome do comando. Se você tiver TCC / LE da JP Software , é claro que você ainda pode usar isso Sintaxe duvidosa, que tem suas raízes no MS-DOS COMMAND , onde vários caracteres de pontuação além do espaço em branco eram caracteres de "terminação", mas é muito melhor usar a sintaxe nativa mais regular do TCC, porque retém o espaço em branco comum como o separador entre o nome do comando e a cauda do comando:

[C:\]set g=/?

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

[C:\]

A sintaxe nativa do TCC não impedirá que on e off sejam reconhecidos especialmente. Para isso, você ainda precisa do comando echo. .

    
por 13.07.2011 / 18:50
2

Na verdade, está funcionando como está. :)

Quando você define "g" como "/?" e depois digite echo %g% você está digitando echo /? , o que (como deveria) lhe dá a ajuda sobre o eco que você está vendo ("Exibe mensagens, ou ativa ou desativa o eco de comando ..."). / p>

Se você digitar echo test%g% , receberá test/? retornado.

    
por 13.07.2011 / 18:42
1

Na verdade, set g=/? está correto. O problema é que /? significa algo especial para cmd.exe. Isso significa mostrar ajuda para o comando. Por exemplo, tente dir /? . Ou no seu caso echo /? .

Execute set g e você verá que g está definido como /?

Portanto, quando você executar echo %g% , você está realmente executando echo /? , o que diz ao cmd.exe para imprimir a mensagem de ajuda.

    
por 13.07.2011 / 18:42
0

Apenas escape do ' / ' - então tente:

C:\>set g=\/?
    
por 13.07.2011 / 18:18