Shell do Windows XP

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 Windows XP 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 Windows Script Host, CScript.exe, 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.

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.

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.

Formatando legenda

Formato Significado
Itálico Informações que o usuário deve fornecer
Negrito Elementos que o usuário deve digitar exatamente como mostrado
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 Código ou resultado de um 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
& […] 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.

Observações

  • O ‘e’ comercial (&), a barra vertical ( | ) e os parêntesis ( ) 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.

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á exibida uma mensagem idêntica a que se segue:

Microsoft (R) Windows XP (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.

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 Windows XP. Somente usuários com privilégios administrativos 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_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 Windows XP.

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.
%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 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, 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 Windows XP (ou seja, a raiz do sistema).
%SYSTEMROOT% Sistema Apresenta a localização da pasta raiz do Windows XP.
%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.
%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 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:

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

Fonte: http://dotinfo.wordpress.com/2010/02/24/shell-do-windows-xp/

2010 12 18