Script de lote - Guia rápido

O Batch Script é incorporado para automatizar as sequências de comandos que são repetitivas por natureza. O script é uma maneira pela qual se pode aliviar essa necessidade, automatizando essas sequências de comandos para tornar a vida no shell mais fácil e produtiva. Na maioria das organizações, o Batch Script é incorporado de uma forma ou de outra para automatizar as coisas.

Alguns dos recursos do Batch Script são -

  • Pode ler entradas de usuários para que possa ser processado posteriormente.

  • Possui estruturas de controle como for, if, while, switch para melhor automação e script.

  • Oferece suporte a recursos avançados, como funções e matrizes.

  • Suporta expressões regulares.

  • Pode incluir outros códigos de programação, como Perl.

Alguns dos usos comuns do Batch Script são -

  • Configurando servidores para diferentes propósitos.

  • Automatizar atividades de manutenção, como exclusão de arquivos indesejados ou arquivos de log.

  • Automatizando a implantação de aplicativos de um ambiente para outro.

  • Instalando programas em várias máquinas ao mesmo tempo.

Os scripts em lote são armazenados em arquivos de texto simples contendo linhas com comandos que são executados em sequência, um após o outro. Esses arquivos têm a extensão especial BAT ou CMD. Os arquivos desse tipo são reconhecidos e executados por meio de uma interface (às vezes chamada de shell) fornecida por um arquivo de sistema chamado interpretador de comandos. Em sistemas Windows, esse interpretador é conhecido como cmd.exe.

Executar um arquivo em lote é uma simples questão de apenas clicar nele. Os arquivos em lote também podem ser executados em um prompt de comando ou na linha Iniciar-Executar. Nesse caso, o nome do caminho completo deve ser usado, a menos que o caminho do arquivo esteja no ambiente do caminho. A seguir está um exemplo simples de um script em lote. Este script em lote, quando executado, exclui todos os arquivos do diretório atual.

:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
:: @ECHO OFF
DEL . DR

Este capítulo explica o ambiente relacionado ao Batch Script.

Escrita e Execução

Normalmente, para criar um arquivo em lote, o bloco de notas é usado. Esta é a ferramenta mais simples para a criação de arquivos em lote. Em seguida, está o ambiente de execução para os scripts em lote. Em sistemas Windows, isso é feito por meio do prompt de comando ou cmd.exe. Todos os arquivos em lote são executados neste ambiente.

A seguir estão as diferentes maneiras de iniciar o cmd.exe -

Method 1 - Vá para C: \ Windows \ System32 e clique duas vezes no arquivo cmd.

Method 2 - Por meio do comando run - O instantâneo a seguir mostra a localização do prompt de comando (cmd.exe) no Windows server 2012.

Depois que o cmd.exe for iniciado, a tela a seguir será exibida. Este será o seu ambiente para executar seus scripts em lote.

variáveis ​​ambientais

Para executar arquivos em lote a partir do prompt de comando, você precisa ir até o local onde o arquivo em lote está armazenado ou, alternativamente, pode inserir o local do arquivo na variável de ambiente do caminho. Assim, supondo que o arquivo em lote esteja armazenado no local C:\Application\bin, você precisará seguir estas instruções para a inclusão da variável PATH.

SO Resultado
janelas Anexar a string; C:\Application\binao final da variável de sistema PATH.

Neste capítulo, veremos alguns dos comandos em lote usados ​​com freqüência.

S.No Comandos e descrição
1 VER

Este comando em lote mostra a versão do MS-DOS que você está usando.

2 ASSOC

Este é um comando em lote que associa uma extensão a um tipo de arquivo (FTYPE), exibe associações existentes ou exclui uma associação.

3 CD

Este comando em lote ajuda a fazer alterações em um diretório diferente ou exibe o diretório atual.

4 CLS

Este comando em lote limpa a tela.

5 CÓPIA DE

Este comando batch é usado para copiar arquivos de um local para outro.

6 DEL

Este comando em lote exclui arquivos e não diretórios.

7 DIR

Este comando em lote lista o conteúdo de um diretório.

8 ENCONTRO

Este comando em lote ajuda a encontrar a data do sistema.

9 ECO

Este comando em lote exibe mensagens ou ativa ou desativa o eco de comandos.

10 SAÍDA

Este comando em lote sai do console DOS.

11 MD

Este comando em lote cria um novo diretório no local atual.

12 MOVER

Este comando em lote move arquivos ou diretórios entre diretórios.

13 CAMINHO

Este comando em lote exibe ou define a variável de caminho.

14 PAUSA

Este comando em lote avisa o usuário e espera que uma linha de entrada seja inserida.

15 PRONTO

Este comando em lote pode ser usado para alterar ou redefinir o prompt cmd.exe.

16 RD

Este comando em lote remove diretórios, mas os diretórios precisam estar vazios antes de serem removidos.

17 REN

Renomeia arquivos e diretórios

18 REM

Este comando batch é usado para comentários em arquivos batch, evitando que o conteúdo do comentário seja executado.

19 COMEÇAR

Este comando em lote inicia um programa em uma nova janela ou abre um documento.

20 TEMPO

Este comando em lote define ou exibe a hora.

21 TIPO

Este comando em lote imprime o conteúdo de um arquivo ou arquivos na saída.

22 VOL

Este comando de lote exibe os rótulos de volume.

23 ATTRIB

Exibe ou define os atributos dos arquivos no diretório curret

24 CHKDSK

Este comando em lote verifica se há problemas no disco.

25 ESCOLHA

Este comando em lote fornece uma lista de opções ao usuário.

26 CMD

Este comando em lote chama outra instância do prompt de comando.

27 COMP

Este comando em lote compara 2 arquivos com base no tamanho do arquivo.

28 CONVERTER

Este comando em lote converte um volume do sistema de arquivos FAT16 ou FAT32 para o sistema de arquivos NTFS.

29 DRIVERQUERY

Este comando em lote mostra todos os drivers de dispositivo instalados e suas propriedades.

30 EXPANDIR

Este comando em lote extrai arquivos de arquivos de gabinete .cab compactados.

31 ENCONTRAR

Este comando em lote procura uma string em arquivos ou entrada, gerando linhas correspondentes.

32 FORMATO

Este comando em lote formata um disco para usar o sistema de arquivos com suporte do Windows, como FAT, FAT32 ou NTFS, substituindo assim o conteúdo anterior do disco.

33 SOCORRO

Este comando em lote mostra a lista de comandos fornecidos pelo Windows.

34 IPCONFIG

Este comando em lote exibe a configuração de IP do Windows. Mostra a configuração por conexão e o nome dessa conexão.

35 RÓTULO

Este comando em lote adiciona, define ou remove um rótulo de disco.

36 MAIS

Este comando em lote exibe o conteúdo de um arquivo ou arquivos, uma tela por vez.

37 INTERNET

Fornece vários serviços de rede, dependendo do comando usado.

38 PING

Este comando em lote envia pacotes de "eco" ICMP / IP pela rede para o endereço designado.

39 DESLIGAR

Este comando em lote desliga um computador ou faz logoff do usuário atual.

40 ORDENAR

Este comando em lote obtém a entrada de um arquivo de origem e classifica seu conteúdo em ordem alfabética, de A a Z ou Z a A. Ele imprime a saída no console.

41 SUBST

Este comando em lote atribui uma letra de unidade a uma pasta local, exibe as atribuições atuais ou remove uma atribuição.

42 INFORMAÇÃO DO SISTEMA

Este comando em lote mostra a configuração de um computador e seu sistema operacional.

43 TASKKILL

Este comando em lote termina uma ou mais tarefas.

44 LISTA DE TAREFAS

Este comando em lote lista tarefas, incluindo nome da tarefa e id do processo (PID).

45 XCOPY

Este comando em lote copia arquivos e diretórios de uma forma mais avançada.

46 ÁRVORE

Este comando em lote exibe uma árvore de todos os subdiretórios do diretório atual em qualquer nível de recursão ou profundidade.

47 FC

Este comando em lote lista as diferenças reais entre dois arquivos.

48 DISKPART

Este comando em lote mostra e configura as propriedades das partições do disco.

49 TÍTULO

Este comando em lote define o título exibido na janela do console.

50 CONJUNTO

Exibe a lista de variáveis ​​de ambiente no sistema atual.

Neste capítulo, aprenderemos como criar, salvar, executar e modificar arquivos em lote.

Criação de arquivos em lote

Os arquivos em lote são normalmente criados no bloco de notas. Portanto, a maneira mais simples é abrir o bloco de notas e inserir os comandos necessários para o script. Para este exercício, abra o bloco de notas e digite as seguintes instruções.

:: Deletes All files in the Current Directory With Prompts and Warnings 
::(Hidden, System, and Read-Only Files are Not Affected) 
:: 
@ECHO OFF 
DEL . 
DR

Salvando arquivos em lote

Após a criação do arquivo em lote, a próxima etapa é salvá-lo. Os arquivos em lote têm a extensão .bat ou .cmd. Algumas regras gerais a serem lembradas ao nomear arquivos em lote -

  • Tente evitar espaços ao nomear arquivos em lote, às vezes cria problemas quando eles são chamados de outros scripts.

  • Não os nomeie com base em arquivos de lote comuns que estão disponíveis no sistema, como ping.cmd.

A captura de tela acima mostra como salvar o arquivo em lote. Ao salvar seu arquivo em lote, alguns pontos a serem considerados.

  • Lembre-se de colocar .bat ou .cmd no final do nome do arquivo.
  • Escolha a opção “Salvar como tipo” em “Todos os arquivos”.
  • Coloque todo o nome do arquivo entre aspas “”.

Executando arquivos em lote

A seguir estão as etapas para executar um arquivo em lote -

  • Step 1 - Abra o prompt de comando (cmd.exe).

  • Step 2 - Vá para o local onde o arquivo .bat ou .cmd está armazenado.

  • Step 3 - Escreva o nome do arquivo conforme mostrado na imagem a seguir e pressione o botão Enter para executar o arquivo em lote.

Modificando arquivos de lote

A seguir estão as etapas para modificar um arquivo em lote existente.

  • Step 1 - Abra o Windows Explorer.

  • Step 2 - Vá para o local onde o arquivo .bat ou .cmd está armazenado.

  • Step 3- Clique com o botão direito no arquivo e escolha a opção “Editar” no menu de contexto. O arquivo será aberto no Bloco de notas para edição posterior.

Normalmente, a primeira linha de um arquivo em lote geralmente consiste no seguinte comando.

Comando ECHO

@echo off

Por padrão, um arquivo em lote exibirá seu comando enquanto é executado. O objetivo deste primeiro comando é desligar esta tela. O comando "echo off" desativa a exibição de todo o script, exceto o próprio comando "echo off". O sinal "arroba" "@" na frente faz com que o comando se aplique a ele mesmo.

Documentação

Freqüentemente, os arquivos em lote também contêm linhas que começam com o comando "Rem". Esta é uma forma de inserir comentários e documentação. O computador ignora qualquer coisa em uma linha após Rem. Para arquivos em lote com complexidade crescente, geralmente é uma boa ideia fazer comentários.

Programa de script de primeiro lote

Vamos construir nosso primeiro programa de script em lote simples. Abra o bloco de notas e digite as seguintes linhas de código. Salve o arquivo como “List.cmd”.

O código faz o seguinte -

  • Usa o comando echo off para garantir que os comandos não sejam exibidos quando o código for executado.

  • O comando Rem é usado para adicionar um comentário para dizer o que exatamente esse arquivo em lote faz.

  • O comando dir é usado para obter o conteúdo da localização C: \ Arquivos de programas.

  • O comando '>' é usado para redirecionar a saída para o arquivo C: \ lists.txt.

  • Finalmente, o comando echo é usado para informar ao usuário que a operação foi concluída.

@echo off 
Rem This is for listing down all the files in the directory Program files 
dir "C:\Program Files" > C:\lists.txt 
echo "The program has completed"

Quando o comando acima for executado, os nomes dos arquivos em C: \ Arquivos de Programas serão enviados para o arquivo C: \ Lists.txt e no prompt de comando será exibida a mensagem “O programa foi concluído”.

Existem dois tipos de variáveis ​​em arquivos em lote. Um é para parâmetros que podem ser passados ​​quando o arquivo em lote é chamado e o outro é feito por meio do comando set.

Argumentos de linha de comando

Os scripts em lote suportam o conceito de argumentos de linha de comando em que os argumentos podem ser passados ​​para o arquivo em lote quando chamados. Os argumentos podem ser chamados dos arquivos em lote por meio das variáveis% 1,% 2,% 3 e assim por diante.

O exemplo a seguir mostra um arquivo em lote que aceita 3 argumentos de linha de comando e os exibe na tela de linha de comando.

@echo off 
echo %1 
echo %2 
echo %3

Se o script de lote acima estiver armazenado em um arquivo chamado test.bat e formos executar o lote como

Test.bat 1 2 3

A seguir está uma captura de tela de como isso ficaria no prompt de comando quando o arquivo em lote for executado.

O comando acima produz a seguinte saída.

1 
2 
3

Se tivéssemos que executar o lote como

Example 1 2 3 4

A saída ainda permaneceria a mesma acima. No entanto, o quarto parâmetro seria ignorado.

Set Command

A outra maneira pela qual as variáveis ​​podem ser inicializadas é por meio do comando 'set'. A seguir está a sintaxe do comando set.

Sintaxe

set /A variable-name=value

Onde,

  • variable-name é o nome da variável que você deseja definir.

  • value é o valor que precisa ser definido em relação à variável.

  • /A – Essa opção é usada se o valor precisar ser numérico por natureza.

O exemplo a seguir mostra uma maneira simples de usar o comando set.

Exemplo

@echo off 
set message=Hello World 
echo %message%
  • No trecho de código acima, uma variável chamada mensagem é definida e configurada com o valor "Hello World".

  • Para exibir o valor da variável, observe que a variável precisa estar entre o sinal%.

Resultado

O comando acima produz a seguinte saída.

Hello World

Trabalhando com Valores Numéricos

No script em lote, também é possível definir uma variável para conter um valor numérico. Isso pode ser feito usando a opção / A.

O código a seguir mostra uma maneira simples em que os valores numéricos podem ser definidos com a opção / A.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Primeiro, estamos definindo o valor de 2 variáveis, aeb para 5 e 10 respectivamente.

  • Estamos adicionando esses valores e armazenando na variável c.

  • Finalmente, estamos exibindo o valor da variável c.

A saída do programa acima seria 15.

Todos os operadores aritméticos trabalham em arquivos em lote. O exemplo a seguir mostra que os operadores aritméticos podem ser usados ​​em arquivos em lote.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

O comando acima produz a seguinte saída.

15 
-5 
2 
50

Variáveis ​​locais vs globais

Em qualquer linguagem de programação, existe a opção de marcar as variáveis ​​como tendo algum tipo de escopo, ou seja, a seção do código na qual podem ser acessadas. Normalmente, as variáveis ​​com escopo global podem ser acessadas em qualquer lugar de um programa, enquanto as variáveis ​​com escopo local têm um limite definido no qual podem ser acessadas.

O script DOS também tem uma definição para variáveis ​​com escopo local e global. Por padrão, as variáveis ​​são globais para toda a sua sessão de prompt de comando. Chame o comando SETLOCAL para tornar as variáveis ​​locais para o escopo do seu script. Depois de chamar SETLOCAL, qualquer atribuição de variável é revertida ao chamar ENDLOCAL, chamar EXIT ou quando a execução atinge o fim do arquivo (EOF) em seu script. O exemplo a seguir mostra a diferença quando as variáveis ​​locais e globais são definidas no script.

Exemplo

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Algumas coisas importantes a serem observadas sobre o programa acima.

  • O 'globalvar' é definido com um escopo global e está disponível em todo o script.

  • A variável 'var' é definida em um escopo local porque está entre um bloco 'SETLOCAL' e 'ENDLOCAL'. Portanto, esta variável será destruída assim que a instrução 'ENDLOCAL' for executada.

Resultado

O comando acima produz a seguinte saída.

13150
5

Você notará que o comando echo% var% não produzirá nada porque após a instrução ENDLOCAL, a variável 'var' não existirá mais.

Trabalhando com Variáveis ​​de Ambiente

Se você tiver variáveis ​​que seriam usadas em arquivos em lote, é sempre preferível usar variáveis ​​de ambiente. Depois que a variável de ambiente é definida, ela pode ser acessada por meio do sinal%. O exemplo a seguir mostra como ver o JAVA_HOME definido em um sistema. A variável JAVA_HOME é um componente-chave normalmente usado por uma ampla variedade de aplicativos.

@echo off 
echo %JAVA_HOME%

A saída mostraria o diretório JAVA_HOME, que dependeria de sistema para sistema. A seguir está um exemplo de uma saída.

C:\Atlassian\Bitbucket\4.0.1\jre

É sempre uma boa prática adicionar comentários ou documentação para os scripts que são criados. Isso é necessário para a manutenção dos scripts para entender o que o script realmente faz.

Por exemplo, considere o seguinte trecho de código, que não tem forma de comentários. Se qualquer pessoa comum que não desenvolveu o script a seguir tentar entendê-lo, demorará muito para essa pessoa entender o que o script realmente faz.

ECHO OFF 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
IF NOT ERRORLEVEL 1 GOTO Syntax 
IF NOT [%2]==[] GOTO Syntax 
SETLOCAL 
SET WSS= 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"') 
DO ECHO.%%a %%A 
ENDLOCAL 
GOTO:EOF 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part 
of the computer name^(s^) to be displayed

Comentários usando a declaração Rem

Existem duas maneiras de criar comentários no Batch Script; um é por meio do comando Rem. Qualquer texto que siga a instrução Rem será tratado como comentário e não será executado. A seguir está a sintaxe geral desta instrução.

Sintaxe

Rem Remarks

onde 'Observações' são os comentários que precisam ser adicionados.

O exemplo a seguir mostra uma maneira simples de Rem comando pode ser usado.

Exemplo

@echo off 
Rem This program just displays Hello World 
set message=Hello World 
echo %message%

Resultado

O comando acima produz a seguinte saída. Você notará que a linha com a instrução Rem não será executada.

Hello World

Comentários usando a :: Declaração

A outra maneira de criar comentários no Batch Script é por meio do comando ::. Qualquer texto que siga a instrução :: será tratado como comentário e não será executado. A seguir está a sintaxe geral desta instrução.

Sintaxe

:: Remarks

onde 'Observações' é o comentário que precisa ser adicionado.

O exemplo a seguir mostra o uso do comando "::".

Exemplo

@echo off 
:: This program just displays Hello World 
set message = Hello World 
echo %message%

Resultado

O comando acima produz a seguinte saída. Você notará que a linha com a instrução :: não será executada.

Hello World

Note - Se você tiver muitas linhas de Rem, pode tornar o código mais lento, porque no final cada linha de código no arquivo de lote ainda precisa ser executada.

Vamos examinar o exemplo do grande script que vimos no início deste tópico e ver como fica quando a documentação é adicionada a ele.

::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF 
:: Windows version check 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
:: Command line parameter check 
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax 
:: Keep variable local 
SETLOCAL 
:: Initialize variable 
SET WSS= 
:: Parse command line parameter 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
:: Use NET VIEW and NBTSTAT to find computers and logged on users 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND 
"<03>"') DO ECHO.%%a %%A 
:: Done 
ENDLOCAL
GOTO:EOF 
:Syntax 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the 
computer name^(s^) to be displayed

Agora você pode ver que o código se tornou mais compreensível para os usuários que não o desenvolveram e, portanto, é mais fácil de manter.

No DOS, uma string é uma coleção ordenada de caracteres, como "Hello, World!".

S.No Strings e descrição
1 Criar String

Uma string pode ser criada no DOS da seguinte maneira.

2 String vazia

String vazia

3 Interpolação de String

A interpolação de string é uma maneira de construir um novo valor de string a partir de uma mistura de constantes, variáveis, literais e expressões, incluindo seus valores dentro de um literal de string.

4 String Concatenation

Você pode usar o operador set para concatenar duas strings ou uma string e um caractere ou dois caracteres. A seguir está um exemplo simples que mostra como usar a concatenação de strings.

5 Comprimento da corda

No script DOS, não há função de comprimento definida para encontrar o comprimento de uma string. Existem funções personalizadas que podem ser usadas para o mesmo. A seguir está um exemplo de uma função definida de forma personalizada para ver o comprimento de uma string.

6 toInt

Uma variável que foi definida como string usando a variável definida pode ser convertida em um inteiro usando a opção / A que está usando a variável definida. O exemplo a seguir mostra como isso pode ser feito.

7 Alinhar à direita

Isso é usado para alinhar o texto à direita, o que normalmente é usado para melhorar a legibilidade de colunas numéricas.

8 String Esquerda

Isso é usado para extrair caracteres do início de uma string.

9 Mid String

Isso é usado para extrair uma substring por meio da posição dos caracteres na string.

10 Retirar

O recurso de substituição de string também pode ser usado para remover uma substring de outra string.

11 Remover ambas as extremidades

Isso é usado para remover o primeiro e o último caractere de uma string.

12 Remover todos os espaços

Isso é usado para remover todos os espaços em uma string por meio de substituição.

13 Substitua uma String

Para substituir uma substring por outra string, use o recurso de substituição de string.

14 String direita

Isso é usado para extrair caracteres do final de uma string.

Os arrays não são especificamente definidos como um tipo no Batch Script, mas podem ser implementados. Os itens a seguir precisam ser observados quando os arrays são implementados no Batch Script.

  • Cada elemento da matriz precisa ser definido com o comando set.
  • O loop 'for' seria necessário para iterar os valores da matriz.

Criando um Array

Uma matriz é criada usando o seguinte comando set.

set a[0]=1

Onde 0 é o índice da matriz e 1 é o valor atribuído ao primeiro elemento da matriz.

Outra maneira de implementar arrays é definir uma lista de valores e iterar por meio da lista de valores. O exemplo a seguir mostra como isso pode ser implementado.

Exemplo

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

Resultado

O comando acima produz a seguinte saída.

1
2
3
4

Acessando matrizes

Você pode recuperar um valor da matriz usando a sintaxe do subscrito, passando o índice do valor que deseja recuperar entre colchetes imediatamente após o nome da matriz.

Exemplo

@echo off 
set a[0]=1 
echo %a[0]%

Neste exemplo, o índice começa em 0, o que significa que o primeiro elemento pode ser acessado usando o índice como 0, o segundo elemento pode ser acessado usando o índice como 1 e assim por diante. Vamos verificar o seguinte exemplo para criar, inicializar e acessar matrizes -

@echo off
set a[0] = 1 
set a[1] = 2 
set a[2] = 3 
echo The first element of the array is %a[0]% 
echo The second element of the array is %a[1]% 
echo The third element of the array is %a[2]%

O comando acima produz a seguinte saída.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

Modificando um Array

Para adicionar um elemento ao final do array, você pode usar o elemento set junto com o último índice do elemento do array.

Exemplo

@echo off 
set a[0] = 1  
set a[1] = 2  
set a[2] = 3 
Rem Adding an element at the end of an array 
Set a[3] = 4 
echo The last element of the array is %a[3]%

O comando acima produz a seguinte saída.

The last element of the array is 4

Você pode modificar um elemento existente de um Array atribuindo um novo valor em um determinado índice, conforme mostrado no exemplo a seguir -

@echo off 
set a[0] = 1 
set a[1] = 2  
set a[2] = 3 
Rem Setting the new value for the second element of the array 
Set a[1] = 5 
echo The new value of the second element of the array is %a[1]%

O comando acima produz a seguinte saída.

The new value of the second element of the array is 5

Iterando sobre uma matriz

A iteração sobre uma matriz é obtida usando o loop 'for' e passando por cada elemento da matriz. O exemplo a seguir mostra uma maneira simples de implementar um array.

@echo off 
setlocal enabledelayedexpansion 
set topic[0] = comments 
set topic[1] = variables 
set topic[2] = Arrays 
set topic[3] = Decision making 
set topic[4] = Time and date 
set topic[5] = Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

As seguintes coisas precisam ser observadas sobre o programa acima -

  • Cada elemento da matriz precisa ser definido especificamente usando o comando set.

  • O loop 'for' com o parâmetro / L para mover pelos intervalos é usado para iterar através da matriz.

Resultado

O comando acima produz a seguinte saída.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

Comprimento de uma matriz

O comprimento de uma matriz é feito iterando sobre a lista de valores na matriz, pois não há função direta para determinar o número de elementos em uma matriz.

@echo off 
set Arr[0] = 1 
set Arr[1] = 2 
set Arr[2] = 3 
set Arr[3] = 4 
set "x = 0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%

Resultado

Saída O comando acima produz a seguinte saída.

The length of the array is 4

Criação de estruturas em matrizes

As estruturas também podem ser implementadas em arquivos em lote usando um pouco de uma codificação extra para implementação. O exemplo a seguir mostra como isso pode ser alcançado.

Exemplo

@echo off 
set len = 3 
set obj[0].Name = Joe 
set obj[0].ID = 1 
set obj[1].Name = Mark 
set obj[1].ID = 2 
set obj[2].Name = Mohan 
set obj[2].ID = 3 
set i = 0 
:loop 

if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=

for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name = %cur.Name% 
echo Value = %cur.ID% 
set /a i = %i%+1 
goto loop

As seguintes coisas importantes precisam ser observadas sobre o código acima.

  • Cada variável definida usando o comando set possui 2 valores associados a cada índice do array.

  • A variável i é definido como 0 para que possamos percorrer a estrutura com o comprimento da matriz, que é 3.

  • Sempre verificamos se o valor de i é igual ao valor de len e se não, percorremos o código.

  • Podemos acessar cada elemento da estrutura usando a notação obj [% i%].

Resultado

O comando acima produz a seguinte saída.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3

As estruturas de tomada de decisão requerem que o programador especifique uma ou mais condições a serem avaliadas ou testadas pelo programa, junto com uma instrução ou instruções a serem executadas se a condição for determinada como truee, opcionalmente, outras instruções a serem executadas se a condição for determinada como false.

S.No Strings e descrição
1 Declaração If

A primeira declaração de tomada de decisão é a declaração 'if'.

2 Declaração If / else

A próxima declaração de tomada de decisão é a declaração If / else. A seguir está a forma geral desta declaração.

3 Instruções aninhadas If

Às vezes, é necessário ter várias instruções 'if' incorporadas umas às outras. A seguir está a forma geral desta declaração.

Um operador é um símbolo que informa ao compilador para executar manipulações matemáticas ou lógicas específicas.

No script em lote, os seguintes tipos de operadores são possíveis.

  • Operadores aritméticos
  • Operadores relacionais
  • Operadores lógicos
  • Operadores de atribuição
  • Operadores bit a bit

Operadores aritméticos

A linguagem de script em lote oferece suporte aos operadores aritméticos normais como qualquer idioma. A seguir estão os operadores aritméticos disponíveis.

Mostrar exemplo

Operador Descrição Exemplo
+ Adição de dois operandos 1 + 2 dará 3
- Subtrai o segundo operando do primeiro 2 - 1 dará 1
* Multiplicação de ambos os operandos 2 * 2 dará 4
/ Divisão do numerador pelo denominador 3/2 dará 1,5
% Operador de módulo e o restante após uma divisão inteiro / flutuante 3% 2 dará 1

Operadores Relacionais

Operadores relacionais permitem a comparação de objetos. Abaixo estão os operadores relacionais disponíveis.

Mostrar exemplo

Operador Descrição Exemplo
EQU Testa a igualdade entre dois objetos 2 EQU 2 dará verdadeiro
NEQ Testa a diferença entre dois objetos 3 NEQ 2 dará verdadeiro
LSS Verifica se o objeto esquerdo é menor que o operando direito 2 LSS 3 dará verdadeiro
LEQ Verifica se o objeto esquerdo é menor ou igual ao operando direito 2 LEQ 3 dará verdadeiro
GTR Verifica se o objeto esquerdo é maior que o operando direito 3 GTR 2 dará verdadeiro
GEQ Verifica se o objeto esquerdo é maior ou igual ao operando direito 3 GEQ 2 dará verdadeiro

Operadores lógicos

Operadores lógicos são usados ​​para avaliar expressões booleanas. A seguir estão os operadores lógicos disponíveis.

A linguagem de lote é equipada com um conjunto completo de operadores lógicos booleanos como AND, OR, XOR, mas apenas para números binários. Também não há valores para TRUE ou FALSE. O único operador lógico disponível para as condições é o operador NOT.

Mostrar exemplo

Operador Descrição
E Este é o operador lógico “e”
OU Este é o operador lógico “ou”
NÃO Este é o operador lógico “não”

Operadores de atribuição

A linguagem Batch Script também fornece operadores de atribuição. A seguir estão os operadores de atribuição disponíveis.

Mostrar exemplo

Operador Descrição Exemplo
+ = Isso adiciona o operando direito ao operando esquerdo e atribui o resultado ao operando esquerdo

Defina / A a = 5

a + = 3

A saída será 8

- = Isso subtrai o operando direito do operando esquerdo e atribui o resultado ao operando esquerdo

Defina / A a = 5

a - = 3

A saída será 2

* = Isso multiplica o operando direito com o operando esquerdo e atribui o resultado ao operando esquerdo

Defina / A a = 5

a * = 3

A produção será de 15

/ = Isso divide o operando esquerdo com o operando direito e atribui o resultado ao operando esquerdo

Defina / A a = 6

a / = 3

A saída será 2

% = Isso leva o módulo usando dois operandos e atribui o resultado ao operando esquerdo

Defina / A a = 5

a% = 3

A saída será 2

Operadores bit a bit

Operadores bit a bit também são possíveis no script em lote. A seguir estão os operadores disponíveis.

Mostrar exemplo

Operador Descrição
E Este é o operador bit a bit “e”
| Este é o operador bit a bit “ou”
^ Este é o bit a bit “xor” ou Exclusivo ou operador

A seguir está a tabela verdade mostrando esses operadores.

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

A data e a hora no DOS Scripting têm os dois comandos básicos a seguir para recuperar a data e a hora do sistema.

ENCONTRO

Este comando obtém a data do sistema.

Sintaxe

DATE

Exemplo

@echo off 
echo %DATE%

Resultado

A data atual será exibida no prompt de comando. Por exemplo,

Mon 12/28/2015

TEMPO

Este comando define ou exibe a hora.

Sintaxe

TIME

Exemplo

@echo off 
echo %TIME%

Resultado

A hora atual do sistema será exibida. Por exemplo,

22:06:52.87

A seguir estão algumas implementações que podem ser usadas para obter a data e a hora em diferentes formatos.

Data no formato ano-mês-dia

Exemplo

@echo off 
echo/Today is: %year%-%month%-%day% 
goto :EOF 
setlocal ENABLEEXTENSIONS 
set t = 2&if "%date%z" LSS "A" set t = 1 

for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do ( 
   for /f "tokens = %t%-4 delims=.-/ " %%d in ('date/t') do ( 
      set %%a=%%d&set %%b=%%e&set %%c=%%f)) 
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

Resultado

O comando acima produz a seguinte saída.

Today is: 2015-12-30

Existem três “arquivos” universais para entrada do teclado, impressão de texto na tela e erros de impressão na tela. O arquivo “Standard In”, conhecido comostdin, contém a entrada para o programa / script. O arquivo “Standard Out”, conhecido comostdout, é usado para gravar a saída para exibição na tela. Finalmente, o arquivo "Erro Padrão", conhecido comostderr, contém todas as mensagens de erro para exibição na tela.

Cada um desses três arquivos padrão, também conhecidos como fluxos padrão, são referenciados usando os números 0, 1 e 2. Stdin é o arquivo 0, stdout é o arquivo 1 e stderr é o arquivo 2.

Redirecionando saída (Stdout e Stderr)

Uma prática comum em arquivos em lote é enviar a saída de um programa para um arquivo de log. O operador> envia ou redireciona stdout ou stderr para outro arquivo. O exemplo a seguir mostra como isso pode ser feito.

Dir C:\ > list.txt

No exemplo acima, o stdout do comando Dir C: \ é redirecionado para o arquivo list.txt.

Se você anexar o número 2 ao filtro de redirecionamento, ele redirecionará o stderr para o arquivo lists.txt.

Dir C:\ 2> list.txt

Pode-se até combinar o stdout e stderrstreams usando o número do arquivo e o prefixo '&'. A seguir está um exemplo.

DIR C:\ > lists.txt 2>&1

Suprimindo a saída do programa

O pseudo arquivo NUL é usado para descartar qualquer saída de um programa. O exemplo a seguir mostra que a saída do comando DIR é descartada enviando a saída para NUL.

Dir C:\ > NUL

Stdin

Para trabalhar com o Stdin, você deve usar uma solução alternativa para conseguir isso. Isso pode ser feito redirecionando o próprio stdin do prompt de comando, chamado CON.

O exemplo a seguir mostra como você pode redirecionar a saída para um arquivo chamado lists.txt. Depois de executar o comando abaixo, o prompt de comando pegará todas as entradas inseridas pelo usuário até obter um caractere EOF. Posteriormente, ele envia todas as entradas para o arquivo lists.txt.

TYPE CON > lists.txt

Por padrão, quando uma execução de linha de comando é concluída, ela deve retornar zero quando a execução for bem-sucedida ou diferente de zero quando a execução falhar. Quando um script em lote retorna um valor diferente de zero depois que a execução falha, o valor diferente de zero indica qual é o número do erro. Em seguida, usaremos o número do erro para determinar o que é o erro e resolvê-lo de acordo.

A seguir estão o código de saída comum e sua descrição.

Erro de código Descrição
0 Programa concluído com sucesso.
1 Função incorreta. Indica que o Action tentou executar um comando não reconhecido no prompt de comando cmd.exe do Windows.
2 O sistema não pode encontrar o arquivo especificado. Indica que o arquivo não pode ser encontrado no local especificado.
3 O sistema não consegue encontrar o caminho especificado. Indica que o caminho especificado não pode ser encontrado.
5 Acesso negado. Indica que o usuário não tem direito de acesso ao recurso especificado.

9009

0x2331

O programa não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote. Indica que o comando, nome do aplicativo ou caminho foi digitado incorretamente ao configurar a ação.

221225495

0xC0000017

-1073741801

Não há memória virtual suficiente disponível.

Isso indica que o Windows ficou sem memória.

3221225786

0xC000013A

-1073741510

O aplicativo foi encerrado como resultado de CTRL + C. Indica que o aplicativo foi encerrado pela entrada do teclado do usuário CTRL + C ou CTRL + Break ou fechando a janela do prompt de comando.

3221225794

0xC0000142

-1073741502

A aplicação falhou em iniciar corretamente. Indica que o aplicativo foi iniciado em uma área de trabalho para a qual o usuário atual não tem direitos de acesso. Outra causa possível é a falha na inicialização de gdi32.dll ou user32.dll.

Nível de Erro

A variável de ambiente% ERRORLEVEL% contém o código de retorno do último programa ou script executado.

Por padrão, a maneira de verificar o ERRORLEVEL é por meio do código a seguir.

Sintaxe

IF %ERRORLEVEL% NEQ 0 ( 
   DO_Something 
)

É comum usar o comando EXIT / B% ERRORLEVEL% no final do arquivo em lote para retornar os códigos de erro do arquivo em lote.

EXIT / B no final do arquivo em lote interromperá a execução de um arquivo em lote.

Use EXIT / B <códigos de saída> no final do arquivo em lote para retornar códigos de retorno personalizados.

A variável de ambiente% ERRORLEVEL% contém o nível de erro mais recente no arquivo em lote, que são os códigos de erro mais recentes do último comando executado. No arquivo em lote, é sempre uma boa prática usar variáveis ​​de ambiente em vez de valores constantes, uma vez que a mesma variável é expandida para valores diferentes em computadores diferentes.

Vejamos um exemplo rápido de como verificar códigos de erro em um arquivo em lote.

Exemplo

Vamos supor que temos um arquivo em lote chamado Find.cmd que possui o código a seguir. No código, mencionamos claramente que, se não encontrarmos o arquivo chamado lists.txt, devemos definir o nível de erro para 7. Da mesma forma, se virmos que a variável userprofile não está definida, devemos definir o código de nível de erro para 9

if not exist c:\lists.txt exit 7 
if not defined userprofile exit 9 
exit 0

Vamos supor que temos outro arquivo chamado App.cmd que chama Find.cmd primeiro. Agora, se Find.cmd retornar um erro em que define o nível de erro como maior que 0, ele sairá do programa. No arquivo em lote a seguir, depois de chamar Find.cnd find, ele realmente verifica se o nível de erro é maior que 0.

Call Find.cmd

if errorlevel gtr 0 exit 
echo “Successful completion”

Resultado

No programa acima, podemos ter os seguintes cenários como saída -

  • Se o arquivo c: \ lists.txt não existir, nada será exibido na saída do console.

  • Se a variável userprofile não existir, nada será exibido na saída do console.

  • Se ambas as condições acima forem aprovadas, a string “Conclusão bem-sucedida” será exibida no prompt de comando.

rotações

No capítulo de tomada de decisão, vimos instruções que foram executadas uma após a outra de maneira sequencial. Além disso, as implementações também podem ser feitas em Batch Script para alterar o fluxo de controle na lógica de um programa. Eles são então classificados em declarações de fluxo de controle.

S.No Loops e descrição
1 Implementação de declaração While

Não há instrução while direta disponível no Batch Script, mas podemos fazer uma implementação desse loop muito facilmente usando a instrução if e rótulos.

2 Para declaração - listar implementações

A construção "FOR" oferece recursos de loop para arquivos em lote. A seguir está a construção comum da instrução 'for' para trabalhar com uma lista de valores.

3 Looping através de Ranges

A instrução 'para' também tem a capacidade de se mover por uma gama de valores. A seguir está a forma geral da declaração.

4 Clássico para Implementação de Loop

A seguir está a declaração clássica 'para' que está disponível na maioria das linguagens de programação.

Loop por meio de argumentos de linha de comando

A instrução 'for' também pode ser usada para verificar os argumentos da linha de comando. O exemplo a seguir mostra como a instrução 'for' pode ser usada para percorrer os argumentos da linha de comando.

Exemplo

@ECHO OFF 
:Loop 

IF "%1"=="" GOTO completed 
FOR %%F IN (%1) DO echo %%F 
SHIFT 
GOTO Loop 
:completed

Resultado

Vamos supor que nosso código acima esteja armazenado em um arquivo chamado Test.bat. O comando acima produzirá a seguinte saída se o arquivo em lote passar os argumentos da linha de comando de 1,2 e 3 como Test.bat 1 2 3.

1 
2 
3

S.No Loops e descrição
1 Break Statement Implementation

A instrução break é usada para alterar o fluxo de controle dentro dos loops em qualquer linguagem de programação. A instrução break é normalmente usada em construções de loop e é usada para causar o encerramento imediato do loop mais interno.

Uma função é um conjunto de instruções organizadas em conjunto para realizar uma tarefa específica. Em scripts em lote, uma abordagem semelhante é adotada para agrupar instruções lógicas para formar uma função.

Como em qualquer outra linguagem, as funções no Batch Script seguem o mesmo procedimento -

  • Function Declaration - Diz ao compilador sobre o nome da função, tipo de retorno e parâmetros.

  • Function Definition - Fornece o corpo real da função.

Definição de Função

No Batch Script, uma função é definida usando a instrução label. Quando uma função é definida de novo, ela pode receber um ou vários valores como 'parâmetros' de entrada para a função, processar as funções no corpo principal e devolver os valores para as funções como 'tipos de retorno' de saída.

Cada função tem um nome de função, que descreve a tarefa que a função executa. Para usar uma função, você "chama" essa função com seu nome e passa seus valores de entrada (conhecidos como argumentos) que correspondem aos tipos de parâmetros da função.

A seguir está a sintaxe de uma função simples.

:function_name 
Do_something 
EXIT /B 0
  • O function_name é o nome dado à função que deve ter algum significado para corresponder ao que a função realmente faz.

  • A instrução EXIT é usada para garantir que a função seja encerrada corretamente.

A seguir está um exemplo de uma função simples.

Exemplo

:Display 
SET /A index=2 
echo The value of index is %index% 
EXIT /B 0
S.No Funções e descrição
1 Chamando uma função

Uma função é chamada no Batch Script usando o comando call.

2 Funções com parâmetros

As funções podem trabalhar com parâmetros simplesmente passando-os quando uma chamada é feita para a função.

3 Funções com valores de retorno

Funções podem trabalhar com valores de retorno simplesmente passando nomes de variáveis

4 Variáveis ​​locais em funções

Variáveis ​​locais em funções podem ser usadas para evitar conflitos de nome e manter mudanças de variáveis ​​locais para a função.

5 Funções Recursivas

A capacidade de encapsular completamente o corpo de uma função, mantendo as alterações de variáveis ​​locais para a função e invisíveis para o chamador.

6 E / S de arquivo

No Batch Script, é possível realizar as operações normais de E / S de arquivo que seriam esperadas em qualquer linguagem de programação.

7 Criação de arquivos

A criação de um novo arquivo é feita com a ajuda do filtro de redirecionamento>. Este filtro pode ser usado para redirecionar qualquer saída para um arquivo.

8 Escrevendo em arquivos

A gravação de conteúdo em arquivos também é feita com a ajuda do filtro de redirecionamento>. Este filtro pode ser usado para redirecionar qualquer saída para um arquivo.

9 Anexando a arquivos

A gravação de conteúdo em arquivos também é feita com a ajuda do filtro de duplo redirecionamento >>. Este filtro pode ser usado para anexar qualquer saída a um arquivo.

10 Lendo de arquivos

A leitura de arquivos em um script em lote é feita usando o comando de loop FOR para percorrer cada linha definida no arquivo que precisa ser lido.

11 Excluindo Arquivos

Para deletar arquivos, o Batch Script fornece o comando DEL.

12 Renomeando arquivos

Para renomear arquivos, o Batch Script fornece o comando REN ou RENAME.

13 Movendo arquivos

Para mover arquivos, o Batch Script fornece o comando MOVE.

14 Arquivos de lote - Pipes

O operador de pipe (|) pega a saída (por padrão, STDOUT) de um comando e a direciona para a entrada (por padrão, STDIN) de outro comando.

15 Arquivos em lote - entradas

Quando um arquivo em lote é executado, ele oferece a opção de passar parâmetros de linha de comando que podem ser lidos no programa para processamento posterior.

16 Usando o operador SHIFT

Uma das limitações dos argumentos da linha de comando é que ele pode aceitar apenas argumentos até% 9. Vamos dar um exemplo dessa limitação.

17 Pastas

No Batch Script, é possível realizar as operações normais baseadas em pastas que seriam esperadas em qualquer linguagem de programação.

18 Criação de pastas

A criação de uma pasta é feita com o auxílio do comando MD (Criar diretório).

19 Listando o conteúdo da pasta

A listagem do conteúdo da pasta pode ser feita com o comando dir. Este comando permite que você veja os arquivos e diretórios disponíveis no diretório atual.

20 Excluindo Pastas

Para excluir pastas, o Batch Scripting fornece o comando DEL.

21 Renomeando Pastas

Para renomear pastas, o Batch Script fornece o comando REN ou RENAME.

22 Movendo pastas

Para mover pastas, o Batch Script fornece o comando MOVE.

Neste capítulo, discutiremos os vários processos envolvidos no Batch Script.

Ver a lista de processos em execução

No Batch Script, o comando TASKLIST pode ser usado para obter a lista dos processos atualmente em execução em um sistema.

Sintaxe

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]
S.No. Opções e descrição
1

/S system

Especifica o sistema remoto para se conectar

2

/U

[domain\]user

Especifica o contexto do usuário sob o qual o comando deve ser executado.

3 -

/P [password]

Especifica a senha para o contexto de usuário fornecido. Solicita entrada se omitido.

4 -

/M [module]

Lista todas as tarefas atualmente usando o nome exe / dll fornecido. Se o nome do módulo não for especificado, todos os módulos carregados serão exibidos.

5

/SVC

Exibe serviços hospedados em cada processo.

6

/V

Exibe informações detalhadas da tarefa.

7

/FI filter

Exibe um conjunto de tarefas que correspondem a um determinado critério especificado pelo filtro.

8

/FO format

Especifica o formato de saída. Valores válidos: "TABLE", "LIST", "CSV".

9

/NH

Especifica que o "Cabeçalho da coluna" não deve ser mostrado na saída. Válido apenas para os formatos "TABLE" e "CSV".

Exemplos

TASKLIST

O comando acima obterá a lista de todos os processos em execução em seu sistema local. A seguir está um instantâneo da saída que é renderizada quando o comando acima é executado como está. Como você pode ver na saída a seguir, não apenas obtém os vários processos em execução no sistema, mas também obtém o uso de memória de cada processo.

Image Name                    PID       Session Name       Session#     Mem Usage
========================= ========    ================ =========== ============
System Idle Process             0        Services            0              4 K
System                          4        Services            0            272 K
smss.exe                      344        Services            0          1,040 K
csrss.exe                     528        Services            0          3,892 K
csrss.exe                     612        Console             1         41,788 K
wininit.exe                   620        Services            0          3,528 K
winlogon.exe                  648        Console             1          5,884 K
services.exe                  712        Services            0          6,224 K
lsass.exe                     720        Services            0          9,712 K
svchost.exe                   788        Services            0         10,048 K
svchost.exe                   832        Services            0          7,696 K
dwm.exe                       916        Console             1        117,440 K
nvvsvc.exe                    932        Services            0          6,692 K
nvxdsync.exe                  968        Console             1         16,328 K
nvvsvc.exe                    976        Console             1         12,756 K
svchost.exe                  1012        Services            0         21,648 K
svchost.exe                   236        Services            0         33,864 K
svchost.exe                   480        Services            0         11,152 K
svchost.exe                  1028        Services            0         11,104 K
svchost.exe                  1048        Services            0         16,108 K
wlanext.exe                  1220        Services            0         12,560 K
conhost.exe                  1228        Services            0          2,588 K
svchost.exe                  1276        Services            0         13,888 K
svchost.exe                  1420        Services            0         13,488 K
spoolsv.exe                  1556        Services            0          9,340 K

tasklist > process.txt

O comando acima pega a saída exibida pela lista de tarefas e salva no arquivo process.txt.

tasklist /fi "memusage gt 40000"

O comando acima irá buscar apenas os processos cuja memória seja maior que 40 MB. A seguir está um exemplo de saída que pode ser renderizado.

Image Name                    PID      Session Name     Session#     Mem Usage
=========================   ======== ================ =========== ============
dwm.exe                        916     Console             1        127,912 K
explorer.exe                  2904     Console             1        125,868 K
ServerManager.exe             1836     Console             1         59,796 K
WINWORD.EXE                   2456     Console             1        144,504 K
chrome.exe                    4892     Console             1        123,232 K
chrome.exe                    4976     Console             1         69,412 K
chrome.exe                    1724     Console             1         76,416 K
chrome.exe                    3992     Console             1         56,156 K
chrome.exe                    1168     Console             1        233,628 K
chrome.exe                     816     Console             1         66,808 K

Matando um Processo Particular

Permite que um usuário executando o Microsoft Windows XP Professional, Windows 2003 ou posterior elimine uma tarefa de uma linha de comando do Windows por ID de processo (PID) ou nome de imagem. O comando usado para este propósito é o comando TASKILL.

Sintaxe

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] 
[/PID processid | /IM imagename] } [/T] [/F]
S.No. Opções e descrição
1

/S system

Especifica o sistema remoto para se conectar

2

/U

[domain\]user

Especifica o contexto do usuário sob o qual o comando deve ser executado.

3 -

/P [password]

Especifica a senha para o contexto de usuário fornecido. Solicita entrada se omitido.

4 -

/FI

FilterName

Aplica um filtro para selecionar um conjunto de tarefas. Permite que "*" seja usado. ex. imagename eq acme * Consulte os filtros abaixo para obter informações adicionais e exemplos.

5

/PID

processID

Especifica o PID do processo a ser encerrado. Use TaskList para obter o PID.

6

/IM

ImageName

Especifica o nome da imagem do processo a ser encerrado. O curinga '*' pode ser usado para especificar todas as tarefas ou nomes de imagem.

7

/T

Encerra o processo especificado e todos os processos filho iniciados por ele.

8

/F

Especifica o encerramento forçado do (s) processo (s).

Exemplos

taskkill /f /im notepad.exe

O comando acima elimina a tarefa aberta do bloco de notas, se aberta.

taskill /pid 9214

O comando acima mata um processo que tem um processo de 9214.

Iniciando um Novo Processo

O script DOS também tem a disponibilidade de iniciar um novo processo. Isso é feito usando o comando START.

Sintaxe

START "title" [/D path] [options] "command" [parameters]

Em que

  • title - Texto para a barra de título da janela CMD (obrigatório).

  • path - Diretório inicial.

  • command - O comando, arquivo em lote ou programa executável a ser executado.

  • parameters - Os parâmetros passados ​​para o comando.

S.No. Opções e descrição
1

/MIN

Janela inicial minimizada

2

/MAX

Janela inicial maximizada.

3 -

/LOW

Use a classe de prioridade IDLE.

4 -

/NORMAL

Use a classe de prioridade NORMAL.

5

/ABOVENORMAL

Use a classe de prioridade ABOVENORMAL.

6

/BELOWNORMAL

Use a classe de prioridade BELOWNORMAL.

7

/HIGH

Use a classe de alta prioridade.

8

/REALTIME

Use a classe de prioridade REALTIME.

Exemplos

START "Test Batch Script" /Min test.bat

O comando acima executará o script em lote test.bat em uma nova janela. As janelas iniciarão no modo minimizado e também terão o título de “Script de lote de teste”.

START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

O comando acima irá realmente executar o Microsoft Word em outro processo e então abrir o arquivo TESTA.txt no MS Word.

Aliases significa criar atalhos ou palavras-chave para comandos existentes. Suponha que se quiséssemos executar o comando abaixo, que nada mais é do que o comando de listagem de diretório com a opção / w para não mostrar todos os detalhes necessários em uma listagem de diretório.

Dir /w

Suponha que criemos um atalho para este comando da seguinte maneira.

dw = dir /w

Quando queremos executar o dir /w comando, podemos simplesmente digitar a palavra dw. A palavra 'dw' agora se tornou um alias para o comando Dir / w.

Criando um Alias

Alias ​​são gerenciados usando o doskey comando.

Sintaxe

DOSKEY [options] [macroname=[text]]

Em que

  • macroname - Um nome curto para a macro.

  • text - Os comandos que você deseja recuperar.

A seguir estão as descrições das opções que podem ser apresentadas ao comando DOSKEY.

S.No. Opções e descrição
1

/REINSTALL

Instala uma nova cópia do Doskey

2

/LISTSIZE = size

Define o tamanho do buffer do histórico de comandos.

3 -

/MACROS

Exibe todas as macros do Doskey.

4 -

/MACROS:ALL

Exibe todas as macros do Doskey para todos os executáveis ​​que possuem macros do Doskey.

5

/MACROS:exename

Exibe todas as macros do Doskey para o determinado executável.

6

/HISTORY

Exibe todos os comandos armazenados na memória.

7

/INSERT

Especifica que o novo texto digitado é inserido no texto antigo.

8

/OVERSTRIKE

Especifica que o novo texto substitui o texto antigo.

9

/EXENAME = exename

Especifica o executável.

10

/MACROFILE = filename

Especifica um arquivo de macros a instalar.

11

macroname

Especifica um nome para uma macro que você cria.

12

text

Especifica os comandos que você deseja gravar.

Exemplo

Crie um novo arquivo chamado keys.bat e digite os seguintes comandos no arquivo. Os comandos a seguir criam dois aliases, um para o comando cd, que vai automaticamente para o diretório chamado test. E o outro é para o comando dir.

@echo off
doskey cd = cd/test
doskey d = dir

Depois de executar o comando, você será capaz de executar esses aliases no prompt de comando.

Resultado

A imagem a seguir mostra que, após a execução do arquivo em lote criado acima, você pode inserir livremente o comando 'd' e ele lhe dará a lista de diretórios, o que significa que seu apelido foi criado.

Excluindo um Alias

Um alias ou macro pode ser excluído definindo o valor da macro como NULL.

Exemplo

@echo off
doskey cd = cd/test
doskey d = dir
d=

No exemplo acima, estamos primeiro configurando a macro d para d = dir. Depois disso, estamos definindo-o como NULL. Como definimos o valor de d como NULL, a macro d será excluída.

Substituindo um Alias

Um alias ou macro pode ser substituído definindo o valor da macro para o novo valor desejado.

Exemplo

@echo off
doskey cd = cd/test
doskey d = dir

d = dir /w

No exemplo acima, estamos primeiro configurando a macro d para d = dir. Depois disso, vamos defini-lo como dir / w. Como definimos o valor de d com um novo valor, o alias 'd' agora assumirá o novo valor.

O Windows agora tem uma biblioteca aprimorada que pode ser usada no Batch Script para trabalhar com dispositivos conectados ao sistema. Isso é conhecido como console do dispositivo - DevCon.exe.

Os desenvolvedores e testadores de driver do Windows podem usar o DevCon para verificar se um driver está instalado e configurado corretamente, incluindo os arquivos INF adequados, pilha de driver, arquivos de driver e pacote de driver. Você também pode usar os comandos DevCon (ativar, desativar, instalar, iniciar, parar e continuar) em scripts para testar o driver.DevCon é uma ferramenta de linha de comando que executa funções de gerenciamento de dispositivos em computadores locais e remotos.

Exibir driver e informações de dispositivo O DevCon pode exibir as seguintes propriedades de drivers e dispositivos em computadores locais e remotos (executando o Windows XP e anteriores) -

  • IDs de hardware, IDs compatíveis e IDs de instância de dispositivo. Esses identificadores são descritos em detalhes nas sequências de identificação do dispositivo.

  • Classes de configuração de dispositivos.

  • Os dispositivos em uma classe de configuração de dispositivo.

  • Arquivos INF e arquivos de driver de dispositivo.

  • Detalhes dos pacotes de drivers.

  • Recursos de hardware.

  • Status do dispositivo.

  • Pilha de driver esperada.

  • Pacotes de driver de terceiros no armazenamento de driver.

  • Pesquisar dispositivos O DevCon pode pesquisar dispositivos instalados e desinstalados em um computador local ou remoto por ID de hardware, ID de instância de dispositivo ou classe de configuração de dispositivo.

  • Alterar as configurações do dispositivo O DevCon pode alterar o status ou a configuração dos dispositivos Plug and Play (PnP) no computador local das seguintes maneiras:

    • Habilite um dispositivo.

    • Desative um dispositivo.

    • Atualizar drivers (interativos e não interativos).

    • Instale um dispositivo (crie um devnode e instale o software).

    • Remova um dispositivo da árvore de dispositivos e exclua sua pilha de dispositivos.

    • Verifique novamente os dispositivos Plug and Play.

    • Adicione, exclua e reordene os IDs de hardware dos dispositivos enumerados pela raiz.

    • Altere os drivers de filtro superior e inferior para uma classe de configuração de dispositivo.

    • Adicione e exclua pacotes de driver de terceiros do armazenamento de driver.

DevCon (DevCon.exe) é incluído quando você instala o WDK, Visual Studio e o Windows SDK para aplicativos de desktop. O kit DevCon.exe está disponível nos seguintes locais quando instalado.

%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe

Sintaxe

devcon [/m:\\computer] [/r] command [arguments]

em que

  • /m:\\computer- Executa o comando no computador remoto especificado. As barras invertidas são obrigatórias.

  • /r- Reinicialização condicional. Reinicializa o sistema após a conclusão de uma operação apenas se uma reinicialização for necessária para tornar efetiva uma alteração.

  • command - Especifica um comando DevCon.

  • Para listar e exibir informações sobre dispositivos no computador, use os seguintes comandos -

    • DevCon HwIDs

    • Classes DevCon

    • DevCon ListClass

    • DevCon DriverFiles

    • DevCon DriverNodes

    • Recursos DevCon

    • DevCon Stack

    • Status DevCon

    • DevCon Dp_enum

  • Para pesquisar informações sobre dispositivos no computador, use os seguintes comandos -

    • DevCon Find

    • DevCon FindAll

  • Para manipular o dispositivo ou alterar sua configuração, use os seguintes comandos -

    • DevCon Enable

    • DevCon Disable

    • Atualização DevCon

    • DevCon UpdateNI

    • DevCon Install

    • DevCon Remover

    • DevCon Rescan

    • DevCon Restart

    • DevCon Reboot

    • DevCon SetHwID

    • DevCon ClassFilter

    • DevCon Dp_add

    • DevCon Dp_delete

Exemplos

A seguir estão alguns exemplos de como o comando DevCon é usado.

List all driver files

O comando a seguir usa a operação DevCon DriverFiles para listar os nomes de arquivo dos drivers usados ​​pelos dispositivos do sistema. O comando usa o caractere curinga (*) para indicar todos os dispositivos no sistema. Como a saída é extensa, o comando usa o caractere de redirecionamento (>) para redirecionar a saída para um arquivo de referência, driverfiles.txt.

devcon driverfiles * > driverfiles.txt

O comando a seguir usa a operação de status DevCon para localizar o status de todos os dispositivos no computador local. Em seguida, ele salva o status no arquivo status.txt para registro ou revisão posterior. O comando usa o caractere curinga (*) para representar todos os dispositivos e o caractere de redirecionamento (>) para redirecionar a saída para o arquivo status.txt.

devcon status * > status.txt

O comando a seguir ativa todos os dispositivos de impressora no computador, especificando a classe de configuração da impressora em um comando DevCon Enable. O comando inclui o parâmetro / r, que reinicializa o sistema se for necessário para tornar a ativação efetiva.

devcon /r enable = Printer

O comando a seguir usa a operação DevCon Install para instalar um dispositivo de teclado no computador local. O comando inclui o caminho completo para o arquivo INF do dispositivo (keyboard.inf) e uma ID de hardware (* PNP030b).

devcon /r install c:\windows\inf\keyboard.inf *PNP030b

O comando a seguir fará a varredura no computador em busca de novos dispositivos.

devcon scan

O comando a seguir fará uma nova varredura no computador em busca de novos dispositivos.

devcon rescan

O registro é um dos elementos-chave em um sistema Windows. Ele contém muitas informações sobre vários aspectos do sistema operacional. Quase todos os aplicativos instalados em um sistema Windows interagem com o registro de uma forma ou de outra.

O Registro contém dois elementos básicos: chaves e valores. Registry keys são objetos de contêiner semelhantes a pastas. Registry valuessão objetos não contêiner semelhantes a arquivos. As chaves podem conter valores ou outras chaves. As chaves são referenciadas com uma sintaxe semelhante aos nomes de caminho do Windows, usando barras invertidas para indicar níveis de hierarquia.

Este capítulo examina várias funções, como consulta de valores, adição, exclusão e edição de valores do registro.

S.No Tipos de registro e descrição
1 Lendo do Registro

A leitura do registro é feita por meio do comando REG QUERY.

2 Adicionando ao Registro

A adição ao registro é feita por meio do comando REG ADD.

3 Excluindo do Registro

A exclusão do registro é feita por meio do comando REG DEL.

4 Copiando chaves de registro

A cópia do registro é feita por meio do comando REG COPY.

5 Comparando Chaves de Registro

A comparação das chaves do registro é feita por meio do comando REG COMPARE.

O script em lote tem a facilidade de trabalhar com configurações de rede. O comando NET é usado para atualizar, corrigir ou visualizar a rede ou as configurações de rede. Este capítulo examina as diferentes opções disponíveis para o comando net.

S.No Comandos e descrição do NET
1 CONTAS LÍQUIDAS

Visualize a senha atual e as restrições de logon do computador.

2 NET CONFIG

Exibe as configurações atuais do servidor ou do grupo de trabalho.

3 NET COMPUTER

Adiciona ou remove um computador conectado ao controlador de domínio do Windows.

4 NET USER

Este comando pode ser usado para o seguinte

Visualize os detalhes de uma conta de usuário específica.

5 NET STOP / START

Este comando é usado para parar e iniciar um serviço específico.

6 NET STATISTICS

Exibir estatísticas de rede da estação de trabalho ou servidor.

7 USO DE REDE

Conecta ou desconecta seu computador de um recurso compartilhado ou exibe informações sobre suas conexões.

A impressão também pode ser controlada a partir do Batch Script por meio do comando NET PRINT.

Sintaxe

PRINT [/D:device] [[drive:][path]filename[...]]

Onde / D: dispositivo - especifica um dispositivo de impressão.

Exemplo

print c:\example.txt /c /d:lpt1

O comando acima imprimirá o arquivo example.txt na porta paralela lpt1.

Controle de impressora de linha de comando

A partir do Windows 2000, muitas, mas não todas, as configurações da impressora podem ser definidas na linha de comando do Windows usando PRINTUI.DLL e RUNDLL32.EXE

Sintaxe

RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]

Onde algumas das opções disponíveis são as seguintes -

  • /dl - Exclua a impressora local.

  • /dn - Exclua a conexão da impressora de rede.

  • /dd - Exclua o driver da impressora.

  • /e - Exibir preferências de impressão.

  • /f[file] - Arquivo inf ou arquivo de saída.

  • /F[file] - Localização de um arquivo INF do qual o arquivo INF especificado com / f pode depender.

  • /ia - Instale o driver da impressora usando o arquivo inf.

  • /id - Instale o driver da impressora usando o assistente para adicionar driver de impressora.

  • /if - Instale a impressora usando o arquivo inf.

  • /ii - Instale a impressora usando o assistente para adicionar impressora com um arquivo inf.

  • /il - Instale a impressora usando o assistente para adicionar impressora.

  • /in - Adicionar conexão de impressora de rede.

  • /ip - Instale a impressora usando o assistente de instalação de impressora de rede.

  • /k - Imprimir página de teste na impressora especificada, não pode ser combinada com o comando ao instalar uma impressora.

  • /l[path] - Caminho de origem do driver da impressora.

  • /m[model] - Nome do modelo do driver da impressora.

  • /n[name] - Nome da impressora.

  • /o - Exibir visualização da fila da impressora.

  • /p - Exibir propriedades da impressora.

  • /Ss - Armazene as configurações da impressora em um arquivo.

  • /Sr - Restaure as configurações da impressora a partir de um arquivo.

  • /y - Defina a impressora como padrão.

  • /Xg - Obtenha as configurações da impressora.

  • /Xs - Defina as configurações da impressora.

Testando se existe uma impressora

Pode haver casos em que você pode estar conectado a uma impressora de rede em vez de uma impressora local. Nesses casos, é sempre bom verificar se existe uma impressora antes de imprimir.

A existência de uma impressora pode ser avaliada com a ajuda do RUNDLL32.EXE PRINTUI.DLL, que é usado para controlar a maioria das configurações da impressora.

Exemplo

SET PrinterName = Test Printer
SET file=%TEMP%\Prt.txt
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q

IF EXIST "%file%" (
   ECHO %PrinterName% printer exists
) ELSE (
   ECHO %PrinterName% printer does NOT exists
)

O comando acima fará o seguinte -

  • Ele definirá primeiro o nome da impressora e um nome de arquivo que conterá as configurações da impressora.

  • Os comandos RUNDLL32.EXE PRINTUI.DLL serão usados ​​para verificar se a impressora realmente existe, enviando as definições de configuração do arquivo para o arquivo Prt.txt

Muitas vezes, você pode ter problemas ao executar arquivos em lote e, na maioria das vezes, você precisa depurar seus arquivos em lote de uma forma ou de outra para determinar o problema com o próprio arquivo em lote. A seguir estão algumas das técnicas que podem ajudar na depuração de arquivos Batch Script.

Mensagens de erro

Para descobrir a origem da mensagem, siga estas etapas -

Step 1 - REM para fora da linha @ECHO OFF, ou seja, REM @ECHO OFF ou :: @ECHO OFF.

Step 2 - Execute o arquivo em lote com os parâmetros de linha de comando necessários, redirecionando todas as saídas para um arquivo de log para comparação posterior.

test.bat > batch.log 2>&1

Step 3 - Procure no arquivo batch.log as mensagens de erro

Step 4- Verifique a linha anterior para qualquer comando inesperado ou inválido, troca (es) de linha de comando ou valor (es); preste atenção especial aos valores de quaisquer variáveis ​​de ambiente usadas no comando.

Step 5 - Corrija o erro e repita este processo até que todas as mensagens de erro tenham desaparecido.

Linhas de Comando Complexas

Outra fonte comum de erros são comandos redirecionados incorretamente, como, por exemplo, comandos FIND ou FINDSTR "aninhados" com strings de pesquisa incorretas, às vezes em um loop FOR / F.

Para verificar a validade desses comandos complexos, siga estas etapas -

Step 1 - Insira "linhas de verificação de comando" antes de uma linha que usa o conjunto de comandos complexo.

A seguir está um exemplo em que o comando ECHO é inserido para marcar onde a saída do primeiro comando TYPE termina e o próximo começa.

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

Step 2 - Siga o procedimento para encontrar as fontes de mensagens de erro descritas acima.

Step 3- Preste atenção especial à saída das linhas de comando "simplificadas": a saída está no formato esperado? O valor ou posição do "token" está conforme o esperado?

Sub-rotinas

As sub-rotinas que geram mensagens de erro representam um "desafio" extra para encontrar a causa do erro, pois podem ser chamadas várias vezes no mesmo arquivo em lote.

Para ajudar a descobrir o que causa a chamada incorreta para a sub-rotina, siga estas etapas -

Step 1 - Adicionar e redefinir uma variável de contador no início do script -

SET Counter = 0

Step 2 - Incrementar o contador cada vez que a sub-rotina é chamada, inserindo a seguinte linha no início da sub-rotina

SET /A Counter+=1

Step 3- Inserir outra linha logo após o incremento do contador, contendo apenas o comando SET; isso listará todas as variáveis ​​de ambiente e seus valores.

Step 4 - Siga o procedimento para encontrar as fontes de mensagens de erro descritas acima.

Versões do Windows

Se você pretende distribuir seus arquivos em lote para outros computadores que podem ou não executar a mesma versão do Windows, você precisará testar seus arquivos em lote no maior número possível de versões do Windows.

O exemplo a seguir mostra como verificar várias versões do sistema operacional para verificar as versões relevantes do Windows.

@ECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only

O login é possível no Batch Script usando o comando de redirecionamento.

Sintaxe

test.bat > testlog.txt 2> testerrors.txt

Exemplo

Crie um arquivo chamado test.bat e digite o seguinte comando no arquivo.

net statistics /Server

O comando acima tem um erro porque a opção para o comando net statistics é fornecida de maneira errada.

Resultado

Se o comando com o arquivo test.bat acima for executado como

test.bat > testlog.txt 2> testerrors.txt

E você abre o arquivo testerrors.txt, você verá o seguinte erro.

The option /SERVER is unknown.

A sintaxe deste comando é -

NET STATISTICS
[WORKSTATION | SERVER]

Mais ajuda está disponível digitando NET HELPMSG 3506.

Se você abrir o arquivo chamado testlog.txt, ele mostrará um registro de quais comandos foram executados.

C:\tp>net statistics /Server