Exportar (0) Imprimir
Expandir Tudo

Visão geral sobre o shell de comandos

Visão geral sobre o shell de comando

O shell de comando é um software independente que oferece comunicação direta entre o usuário e o sistema operacional. A interface de usuário não gráfica do shell de comando é o ambiente propício para a execução de aplicativos e utilitários baseados em caracteres. O shell de comando executa programas e exibe os dados de saída em uma tela usando caracteres individuais de forma idêntica ao interpretador de comandos do MS-DOS, o Command.com. O shell de comando do sistema operacional de servidor Windows usa o interpretador de comandos Cmd.exe, que carrega aplicativos e direciona o fluxo de informações entre aplicativos, para transformar entradas de usuário em um formato que possa ser compreendido pelo sistema operacional.

Você pode usar o shell de comando para criar e editar arquivos em lotes (também denominados de scripts) e, assim, automatizar tarefas rotineiras. Por exemplo, você pode usar scripts para automatizar o gerenciamento de contas de usuários ou backups noturnos. Você também pode usar a versão de linha de comando do Host de scripts do Windows, CScript.exe, para executar scripts mais sofisticados no shell de comando. Para obter mais informações, consulte Executar host de scripts do Windows. O uso de arquivos em lotes possibilita a realização de operações mais eficientes do que através da interface do usuário. Os arquivos em lotes aceitam todos os comandos disponíveis na linha de comando. Para obter mais informações sobre arquivos em lotes, consulte Usando arquivos em lotes.

Você pode personalizar a janela do prompt de comando para obter uma melhor visualização e aumentar o controle sobre como são executados os programas. Para obter mais informações sobre a personalização da janela do prompt de comando, consulte Configurar o prompt de comando.

Usando a sintaxe dos comandos

A sintaxe indica a ordem na qual você deve digitar um comando e seus parâmetros. O exemplo a seguir do comando xcopy ilustra diversos formatos de texto de sintaxe:

xcopy Origem [Destino] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-AAAA]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:Arquivo1[+[Arquivo2]][+[Arquivo3]] [{/y | /-y}] [/z]

A tabela a seguir explica como interpretar os diversos formatos de texto.

Legenda da formatação

Formato Significado

Itálico

Informações que o usuário deve fornecer

Negrito

Elementos que o usuário deve digitar exatamente como é exibido

Reticências (...)

Parâmetro que pode ser repetido várias vezes em uma linha de comando

Entre colchetes ([])

Itens opcionais

Entre chaves ({}); opções separadas por barra vertical (|). Exemplo: {even|odd}

Conjunto de opções entre as quais o usuário deve escolher apenas uma

Fonte Courier

Saída de código ou de programa

Usando diversos comandos e símbolos de processamento condicional

Você pode executar diversos comandos a partir de uma única linha de comando ou script usando símbolos de processamento condicional. Quando você executa diversos comandos com símbolos de processamento condicional, os comandos à direita do símbolo atuam com base nos resultados do comando à esquerda do símbolo de processamento condicional. Por exemplo, se você quiser executar um comando somente quando o comando anterior falhar. Ou, se quiser executar um comando somente quando o comando anterior tiver sido executado corretamente.

Você pode usar os caracteres especiais listados na tabela a seguir para passar vários comandos.

 

Caractere Sintaxe Definição

& [...]

Comando1 &Comando2

Use para separar vários comandos em uma linha de comando. O Cmd.exe executa o primeiro comando e, em seguida, o segundo.

&& [...]

Comando1 &&Comando2

Use para executar o comando posterior ao && somente se o comando anterior ao símbolo tiver sido executado corretamente. O Cmd.exe executa o primeiro comando e somente executará o segundo se o primeiro tiver sido concluído com êxito.

|| [...]

Comando1 || Comando2

Use para executar o comando posterior ao || somente se o comando anterior ao || falhar. O Cmd.exe executa o primeiro comando e somente executará o segundo se o primeiro tiver sido concluído com êxito (recebe um código de erro superior a zero).

( ) [...]

( Comando1 & Comando2)

Use para agrupar ou aninhar vários comandos.

; ou ,

Comando1 Parâmetro1;Parâmetro2

Use para separar parâmetros do comando.

Observações

  • O 'e' comercial (&), a barra vertical ( | ) e os parênteses ( ) são caracteres especiais que devem ser precedidos do caractere de escape ( ^ ) ou de aspas quando forem passados como argumentos.
  • Se um comando for executado corretamente, apresentará como resposta um código de saída zero (0) ou nenhum código de saída. Para obter mais informações sobre códigos de saída, consulte Usando o Windows Deployment and Resource Kits.

Aninhando Shells de comandos

Você pode aninhar shells de comandos no Cmd.exe abrindo uma nova instância do Cmd.exe no prompt de comando. Por padrão, cada instância do Cmd.exe herda o ambiente do aplicativo Cmd.exe pai. Ao aninhar instâncias de Cmd.exe, você poderá fazer alterações no ambiente local sem afetar o aplicativo pai do Cmd.exe. Isso permite preservar o ambiente original do Cmd.exe e retornar a ele depois de encerrar o shell de comando aninhado. As alterações efetuadas no shell de comando aninhado não são salvas.

Para aninhar um shell de comando, no prompt de comando, digite:

cmd

Será exibida uma mensagem idêntica a que se segue:

Microsoft (R) Windows Server 2003, Standard Edition (TM)(C) Copyright 1985-2002 Microsoft Corp.

Para fechar o shell de comando aninhado, digite exit.

Você pode limitar ainda mais a pesquisa das alterações em uma instância do Cmd.exe (ou em um script) usando os comandos setlocal e endlocal. Setlocal cria um escopo local e endlocal encerra o escopo local. Quaisquer alterações efetuadas dentro do escopo setlocal e endlocal serão eliminadas, deixando assim o ambiente original inalterado. Você pode aninhar esses dois comandos até um máximo de 32 níveis. Para obter mais informações sobre os comandos setlocal e endlocal, consulte Setlocal e Endlocal.

Usando variáveis de ambiente com Cmd.exe

O ambiente do shell de comando Cmd.exe é definido por variáveis que determinam o comportamento do shell de comandos e do sistema operacional. Você pode definir o comportamento do ambiente do shell de comando ou de todo o ambiente do sistema operacional usando dois tipos de variáveis de ambiente: de sistema e local. As variáveis de ambiente de sistema definem o comportamento do ambiente do sistema operacional global. As variáveis de ambiente locais definem o comportamento do ambiente da instância atual do Cmd.exe.

As variáveis de ambiente de sistema estão predefinidas no sistema operacional e disponíveis a todos os processos do sistema operacional de servidor Windows. Somente usuários com credenciais administrativas podem alterar variáveis de sistema. Essas variáveis são usadas com mais freqüência em scripts de logon.

As variáveis de ambiente locais só ficam disponíveis quando o usuário para o qual elas são criadas encontra-se conectado com o computador. As variáveis locais definidas na seção HKEY_CURRENT_USERsó serão válidas para o usuário atual, mas definem o comportamento do ambiente do sistema operacional global.

A lista a seguir descreve os diversos tipos de variáveis em ordem decrescente de precedência:

  1. Variáveis internas do sistema
  2. Variáveis de sistema encontradas na seção HKEY_LOCAL_MACHINE
  3. Variáveis locais encontradas na seção HKEY_CURRENT_USER
  4. Todas as variáveis de ambiente e caminhos definidos no arquivo Autoexec.bat
  5. Todas as variáveis de ambiente e caminhos definidos em um script de logon (caso haja algum)
  6. Variáveis usadas de forma interativa em um script ou arquivo em lotes

No shell de comando, cada instância do Cmd.exe herda o ambiente de seu aplicativo pai. Portanto, você pode alterar as variáveis no novo ambiente Cmd.exe sem afetar o ambiente do aplicativo pai.

A tabela a seguir lista as variáveis de ambiente de sistema e locais do Windows Server.

 

Variável Tipo Descrição

%ALLUSERSPROFILE%

Local

Apresenta a localização de todos os perfis de usuários.

%APPDATA%

Local

Apresenta a localização onde os aplicativos armazenam dados por padrão.

%CD%

Local

Apresenta a seqüência da pasta atual.

%CMDCMDLINE%

Local

Apresenta a linha de comando exata usada para iniciar o Cmd.exe atual.

%CMDEXTVERSION%

Sistema

Apresenta o número de versão das extensões do Processador de comandos atual.

%COMPUTERNAME%

Sistema

Apresenta o nome do computador

%COMSPEC%

Sistema

Apresenta o caminho exato até o executável do shell de comando.

%DATE%

Sistema

Apresenta a data atual. Usa o mesmo formato que o comando date /t. Gerado por Cmd.exe. Para obter mais informações sobre o comando date, consulte Date.

%ERRORLEVEL%

Sistema

Apresenta o código de erro do último comando usado. Um valor diferente de zero geralmente indica um erro.

%HOMEDRIVE%

Sistema

Apresenta a letra da unidade da estação de trabalho local que está conectada à pasta base do usuário. Definida com base no valor da pasta base. A pasta base do usuário é especificada em <b>Usuários e grupos locais</b>.

%HOMEPATH%

Sistema

Apresenta o caminho completo da pasta base do usuário. Definido com base no valor da pasta base. A pasta base do usuário é especificada em <b>Usuários e grupos locais</b>.

%HOMESHARE%

Sistema

Apresenta o caminho de rede até a pasta base compartilhada do usuário. Definido com base no valor da pasta base. A pasta base do usuário é especificada em <b>Usuários e grupos locais</b>.

%LOGONSERVER%

Local

Apresenta o nome do controlador de domínios que validou a sessão de logon atual.

%NUMBER_OF_PROCESSORS%

Sistema

Especifica o número de processadores instalados no computador.

%OS%

Sistema

Apresenta o nome do sistema operacional. O Windows 2000 exibe o sistema operacional como Windows NT.

%PATH%

Sistema

Especifica o caminho de pesquisa para arquivos executáveis.

%PATHEXT%

Sistema

Apresenta uma lista de extensões de arquivos que o sistema operacional considera como executáveis.

%PROCESSOR_ARCHITECTURE%

Sistema

Apresenta a arquitetura do chip do processador. Valores: x86 ou IA64 (baseado em Itanium).

%PROCESSOR_IDENTFIER%

Sistema

Apresenta uma descrição do processador.

%PROCESSOR_LEVEL%

Sistema

Apresenta o número do modelo do processador instalado no computador.

%PROCESSOR_REVISION%

Sistema

Apresenta o número de revisão do processador.

%PROMPT%

Local

Apresenta as configurações do prompt de comando do intérprete atual. Gerado pelo Cmd.exe.

%RANDOM%

Sistema

Apresenta um número decimal aleatório entre 0 e 32767. Gerado pelo Cmd.exe.

%SYSTEMDRIVE%

Sistema

Apresenta a unidade que contém o diretório raiz do Windows Server (ou seja, a raiz do sistema).

%SYSTEMROOT%

Sistema

Apresenta a localização do diretório raiz do sistema operacional Windows Server.

%TEMP% e %TMP%

Sistema e usuário

Apresenta as pastas temporárias padrão usadas pelos aplicativos disponíveis aos usuários que estiverem conectados no momento. Alguns aplicativos exigem TEMP e outros TMP.

%TIME%

Sistema

Apresenta a hora atual. Usa o mesmo formato do comando time /t. Gerado pelo Cmd.exe. Para obter mais informações sobre o comando time, consulte Time.

%USERDOMAIN%

Local

Apresenta o nome do domínio que contém a conta do usuário.

%USERNAME%

Local

Apresenta o nome do usuário conectado no momento.

%USERPROFILE%

Local

Apresenta a localização do perfil do usuário atual.

%WINDIR%

Sistema

Apresenta a localização da pasta do sistema operacional.

Definindo variáveis de ambiente

Use o comando set para criar, alterar, excluir ou exibir variáveis de ambiente. O comando set altera variáveis somente no ambiente shell atual.

Para exibir uma variável, no prompt de comando, digite:

set Nome_da_Variável

Para adicionar uma variável, no prompt de comando, digite:

set Nome_da_Variável = Valor

Para excluir uma variável, no prompt de comando, digite:

set Nome_da_Variável =

Você pode usar a maioria dos caracteres como valores de variáveis, mesmo o espaço em branco. Se forem usados caracteres especiais <, >, |, &, ou ^, use o caractere de escape ou aspas antes deles. Se usar aspas, elas serão incluídas como parte do valor porque tudo que segue o sinal de igual é entendido como valor. Considere os seguintes exemplos:

  • Para criar o valor de variável novo&nome, digite:
    set varname=novo^&nome
  • Para criar o valor de variável "novo&nome", digite:
    set varname="novo&nome"
  • Se você digitar set varname=novo&nome no prompt de comando, será exibida uma mensagem de erro similar a que se segue:
    "'nome' não é reconhecido como um comando interno ou externo, nem como programa operável ou arquivo em lotes."
    

Os nomes de variáveis não diferenciam maiúsculas de minúsculas. Porém, set exibe a variável exatamente da forma como tiver sido digitada. Você pode combinar letras maiúsculas e minúsculas nos nomes das variáveis para tornar o código mais legível (por exemplo, NomeDoUsuário).

Observações

  • O tamanho máximo de uma variável de ambiente individual é 8.192 bytes.
  • O tamanho total máximo para todas as variáveis de ambiente, o que inclui nomes de variáveis e o sinal de igual, é 65.536 KB.

Substituindo valores de variáveis de ambiente

Para permitir a substituição de valores de variáveis na linha de comando ou em scripts, coloque o nome da variável entre símbolos de porcentagem (ou seja, %Nome_da_Variável%). Ao usar os símbolos de porcentagem, você garante que o Cmd.exe faça referência aos valores das variáveis em vez de fazer uma comparação literal. Depois de definir valores de variável para um nome de variável, coloque o nome da variável entre símbolos de porcentagem. O Cmd.exe tenta localizar todas as instâncias do nome da variável e substitui-lo pelo valor de variável definido. Por exemplo, se você criar um script que contenha valores diferentes (por exemplo, nomes de usuários) e quiser definir a variável de ambiente USERNAME para cada usuário com esses valores, você poderá gravar um script usando a variável USERNAME entre símbolos de porcentagem. Quando você executa esse script, o Cmd.exe substitui %USERNAME% pelos valores das variáveis, o que elimina a necessidade de executar essa tarefa manualmente para cada usuário. A substituição de variáveis não é recursiva. O Cmd.exe verifica as variáveis uma vez. Para obter mais informações sobre substituição de variáveis, consulte Para e Call.

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft