Batch  Script 
Olá,  irei explicar aqui algumas coisinhas sobre batch script, exemplos, não apenas  para Win98, mas também para NT/XP pois existem poucos documentos para XP em  português...
O  que é um BAT?
Tipo  de arquivo em lote (batch file) do DOS e sistemas Windows. Neste tipo de arquivo  pode-se entrar vários comandos de linha de comando a serem executados, em vez de  ter de escrevê-los um a um na linha de comando. O arquivo em lote com extensão  BAT mais famoso é o Autoexec.bat, que é executado toda a vez em que o sistema  operacional é carregado.
Bom, vamos conhecer agora alguns comandos  que iremos usar frequentemente, se tiver dúvida, digite COMANDO /? que irá ser  mostrado uma explicação e exemplos do seu uso:
ECHO
Serve  para que seja ativado ou desativado o "eco" do comando ou para que seja mostrado  uma mensagem. Usa-se echo. para  quebrar uma linha.
Exemplo1:
@echo off
echo Olá  mundo!
echo.
echo :D
O  @ antes do echo off serve para que o mesmo não seja mostrado, e assim ele  desative o "eco" silenciosamente. Se tiver alguma dúvida, crie um exemplo sem  usar o @.
Exemplo  2:
@echo off
echo  Inicio do arquivo > Teste.txt
echo. >> Teste.txt
echo Bla bla bla  >> Teste.txt
Isso  fará com que seja escrito os dados no arquivo Teste.txt, ficando  assim:
Inicio do arquivo 
Bla bla bla
CLS
Serve  para limpar a tela.. é como se fosse um /clear para quem usa IRC.. ^^  
GOTO
Serve  para alterar a ordem normal de execução do batch, fazendo ir para um rótulo  específico, um rótulo é identificado com o :. 
Exemplo:
@echo off 
GOTO  UIA
echo Deveria aparecer isso se não fosse o rótulo :D
:UIA
echo  Pulamos para cá! hehehe
Parâmetros
Isso  é muito interessante.. é para que se possa usar parâmetros de execução em seu  batch. Em programas por exemplo que precisa ser digitado:nomedoprograma  /i  (para  instalar)
nomedoprograma  /d  (para  desintalar)
ou  pode ser -i ao  invés de /i e  -d ao  invés de /d.
No  batch script, pode-se identificar o parâmetro, através disso:
%1 - Primeiro  parâmetro
%2 - Segundo parâmetro e assim  sucessivamente.
Exemplo:
@echo off
echo %1 -  Parametro 1
echo %2 - Parametro 2
Execute-o  assim: nomedoarquivo  vamos ver
Aparecerá:
vamos  - Parametro 1
ver - Parametro 2. Simples né?
SET
Serve  para exibir, definir ou remover variáveis.
Variável é algo que guarda alguma  informação, se chama variável por que seu valor pode variar. (duh)
Para setar  uma variável: SET variavel=seu_valor 
Para visualizar ou usar o valor da  variável digite: %variavel%.
Exemplo:
@echo off
set  nome=""
Digite o seu nome:
set /p nome=
echo.
echo Ola %nome%  !!
IF  / ELSE
É  usado em praticamente todas linguagens de programação, serve para impor uma  condição.
Exemplo:
@echo off
set  opcao=""
echo Digite uma opcao (1 ou 2):
set /p opcao=
IF [%opcao%] EQU  [1] (GOTO OPCAO1) ELSE (GOTO OPCAO2)
:OPCAO1
echo Opcao 1 bla bla  bla
goto FIM
:OPCAO2
echo Opcao 2 bla bla bla
:FIM
echo  CABOU
Se  tiver dúvidas sobre o IF, digite no prompt IF /?
CHOICE  (Em Win9x)
Possibilita  dar opções de escolha para a pessoa.
Exemplo:
@echo off
choice  /n/c123
if errorlevel 1 goto A1
if errorlevel 2 goto A2
if errorlevel 3  goto A3
:A1
echo Acao 1
goto FIM
:A2
echo Acao 2
goto  FIM
:A3
echo Acao 3
goto FIM
:FIM
echo  Kabou..
Bom,  visto algumas funções, dê uma re-lida, use o parâmetro /? para conhecer mais  sobre cada comando, crie coisinhas bobas para ver se já entendeu..
Bom,  iremos criar duas tools(ferramentas), a primeira é para o comando PING e outra  será para quem usa rede, pra facilitar o uso do NET SEND.
Talvez possa ter  incompatibilidade com Win9x já que irei fazer no XP..
Muitos acham que o  PING é apenas ping IP/HOST, mas desconhecem suas outras opções, então vamos lá,  dê um PING /?:
Uso: ping [-t] [-a] [-n  num] [-l tamanho] [-f] [-i TTL] [-v TOS]
[-r num] [-s num] [[-j lista_hosts]  | [-k lista_hosts]]
[-w tempo_limite] nome_destino Opções:
-t Dispara  contra o host especificado até ser interrompido.
Para ver estatísticas e  continuar, pressione CTRL-Break;
para terminar, pressione CRTL-C.
-a  Resolve endereços para nomes de host.
-n num Número de requisições de eco a  enviar. O valor padrão é 4.
-l tamanho Envia o tamanho do buffer.
-f Ativa  o sinalizador de não-fragmentação no pacote.
-i TTL Define o tempo de  vida.
-v TOS Define o tipo de serviço.
-r num Rota dos pacotes para   saltos.
-s num Data e hora para  saltos.
-j  lista_hosts Rota ampliada de origens definida em .
-k  lista_hosts Rota restrita de origens definida em .
-w  tempo_limite Tempo limite em milissegundos a aguardar para cada  resposta.
Ótimo,  vamos criar uma ferramenta para que ao usuário digitar o nome do batch file, ele  pergunte o IP, número de requisições. tamanho do pacote e tempo  limite.
Mãos  a obra:
Dê  um: edit  xping.bat
Abrirar  o editor.. se não gostar, faça no bloco de notas mesmo :P
Obs: REM é  usado para comentar uma linha... 
@echo off
REM Limpa  as variaveis...
set ip=""
set num=""
set pack=""
set  timeout=""
echo.
echo Qual o IP desejado?
REM Ira pegar o valor que for  digitado e atribuir a variavel ip
set /p ip=
echo.
echo Qual o tamanho  do pacote a ser enviado? (max: 65500)
REM Ira pegar o valor que for digitado  e atribuir a variavel pack
set /p pack=
echo.
echo Qual sera o número  de requisicoes? Coloque 0 para ser infinito.
REM Ira pegar o valor que for  digitado e atribuir a variavel num
set /p num=
echo.
echo Qual sera o  tempo limite de espera? Em milisegundos.
REM Ira pegar o valor que for  digitado e atribuir a variavel timeout
set /p  timeout=
echo.
cls
echo  **********************************************
echo  *                                            *
echo *        XPing por  whit3_sh4rk               *
echo *                                             *
echo  **********************************************
echo.
REM Mostra qual foi o  alvo definido anteriormente, usando a variavel ip
echo Iniciando o ping ao  alvo: %ip%
echo.
REM Lembra do numero de requisicoes? (Coloque 0 para ser  infinito.)
REM Iremos pegar o valor atribuido ao numero de requisicoes
REM  se for igual a 0 ele fara o ping infinito, usando o parametro -t
REM se não  for igual a 0 ele pega o numero de requisicoes atribuido
REM a variavel %num%  e usa-o...
IF [%num%] EQU [0] (
ping -t %ip% -l %pack% -w %timeout%
)  ELSE (
ping %ip% -n %num% -l %pack% -w %timeout%
echo.
echo Fim do  ping!
)
Ótimo,  terminanos! Salve isso é claro!
Agora teste o programa, e tente entender cada  linha(nossaaa q difícil!!) kkkk depois disso vamos agora para a próxima tool,  nela usaremos parâmetros..
Obs: Só uma dica, se quiserem usarem parâmetros  também nesse "xping" é só definir corretamente o parametro 1=ip, parametro  2=pack, parametro 3=num, parametro 4=timeout, ae é só a pessoa  usar:
xping 127.0.0.1 65500  5 1000
Ou  seja, irá pingar no 127.0.0.1, com  um buffer de 65500  bytes,  fazer isso 5  vezes, e  esperar 1seg pelo  resposta... :D
Mãos  a obra 2 a revolta(lol):
Bom,  imaginemos que aqui na rede tem 3 máquinas, seus nomes:LOCKE
SAWYER
HURLEY
(qualquer  semelhança com o seriado LOST é mera coincidência :)
Dê um: edit  msg.bat
Vamos  lá:
@echo off
set  msg=""
IF [%1] EQU [] GOTO AFF
IF [%1] EQU [LOCKE] (GOTO LOCKE) ELSE IF  [%1] EQU [SAWYER] (GOTO SAWYER) ELSE IF [%1] EQU [HURLEY] (GOTO HURLEY) ELSE  (GOTO AFF)
:LOCKE
echo Digite a mensagem que deseja enviar para  LOCKE:
set /p msg=
echo.
net send LOCKE %msg%
GOTO  :EOF
:SAWYER
echo Digite a mensagem que deseja enviar para SAWYER:
set  /p msg=
echo.
net send SAWYER %msg%
GOTO :EOF
:HURLEY
echo Digite  a mensagem que deseja enviar para HURLEY:
set /p msg=
echo.
net send  HURLEY %msg%
:AFF
echo.
echo Nenhum parametro valido foi  especificado!
Salve..
Como  será usado?
Abra o prompt e digite:msg  LOCKE
oumsg  SAWYER
oumsg  HURLEY
Lembre-se  de que é CaSe SeNsItiVe :D