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 Microsoft Windows utiliza 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 o Microsoft Windows Script Host, , para executar scripts mais sofisticados no shell de comando. 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 .

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 .

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:arquivo_1[+[arquivo_2]][+[arquivo_3]] [{/y|/-y}] [/z]

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

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
& [...] comando_1 & comando_2 Use para separar vários comandos em uma linha de comando. O Cmd.exe executa o primeiro comando e, em seguida, o segundo.
&& [...] comando_1 && comando_2 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.
|| [...] comando_1 || comando_2 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).
( ) [...] (comando_1 & comando_2) Use para agrupar ou aninhar vários comandos.
; ou , comando_1 parâmetro_1;parâmetro_2 Use para separar parâmetros do comando.

Importante:

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 do 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á mostrada uma mensagem idêntica a que se segue:Microsoft (R) Microsoft Windows (TM)
(C) Copyright 1985-2001 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 e .

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 encontram-se presentes no sistema operacional e disponíveis a todos os processos do Microsoft Windows. Somente usuários com privilégios administrativos podem alterar variáveis de sistema. Essas variáveis são usadas com mais frequê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 HKEY_CURRENT_USER só 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 Microsoft Windows.

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 sequê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 .
%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 Usuários e grupos locais.
%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 Usuários e grupos locais.
%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 Usuários e grupos locais.
%LOGONSEVER% 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 Microsoft Windows exibe o sistema operacional como Microsoft 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: , IA64.
%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 a pasta raiz do Microsoft Windows (ou seja, a raiz do sistema).
%SYSTEMROOT% Sistema Apresenta a localização da pasta raiz do Microsoft Windows.
%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 .
%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 mostrar variáveis de ambiente. O comando set altera variáveis somente no ambiente shell atual.

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

set nome_da_variável

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

set variablename=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:

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).

Importante:

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 e .