Bom ai estar metade do meu conhecimento de batch vou compartilhar com vcs esses pequenos tutoriais ai que eu fiz juntando uns codigos que ainda ficou na minha memoria
OBS Se Alguns Não pegar E PQ Eu n ME Lembrei
BOm Vamos Aos Tutoriais
Como reiniciar o computador através de um programa em BATch ?
apenas digite a linha de comando abaixo e o arquivo REBOOT.COM será criado, ao rodá-lo, o computador será reiniciado.
ECHO HPS(ALT+203)>REBOOT.COM
ou digite esta linha em um programa BATch
ECHO G=FFFF:0 | DEBUG >NUL
Inserindo Data e Hora nos seus programas
Há vários programinhas que possibilitam a inserção da data e hora, como: P2E, GET25, BATCHMAN & STRINGS
mas também existe uma solução pura do Ms-DOS:
@echo off
echo @prompt SET TIME$Q$T$_SET DATE$Q$D >TEMP$TMP.BAT
command /c TEMP$TMP.BAT > TEMP$$MP.BAT
call TEMP$$MP>BAT >nul
del TEMP$?MP.BAT
echo.
echo A Data De Hoje é: %date%
echo A Hora Agora é : %time%
echo.
set date=
set time=
Combinando arquivos em um
O comando COPY do DOS pode ser usado:
COPY *.TXT ALL.XXX
RENAME ALL.XXX ALL.TXT
ou
FOR %%f IN (*.TXT) DO TYPE %%f>>ALL.XXX
RENAME ALL.XXX ALL.TXT
A renomeação é necessária
Formatando um disco sem que o DOS faça perguntas
Com o MS-DOS 4.0+ use FORMAT A: /AUTOTEST
ou
echo n>temp.tmp
echo n>>temp.tmp
Format a: /q /vISCO>log.txt<temp.tmp
Deste modo o disco será formatado e nada aparecerá na tela.
Como saber o Errorlevel e mostrá-lo na tela ?
FOR %%E IN (0,1,2) DO IF ERRORLEVEL %%E00 SET ERLVL=%%E
IF "%ERLVL%"=="0" SET ERLVL=
SET RANGE=0,1,2,3,4,5,6,7,8,9
IF "%ERLVL%"=="2" SET RANGE=0,1,2,3,4,5
FOR %%E IN (%RANGE%) DO IF ERRORLEVEL %ERLVL%%%E0 SET ERLVL=%ERLVL%%%E
IF "%ERLVL%"=="0" SET ERLVL=
IF NOT "%ERLVL%"=="25" SET RANGE=0,1,2,3,4,5,6,7,8,9
FOR %%E IN (%RANGE%) DO IF ERRORLEVEL %ERLVL%%%E SET ERLVL=%ERLVL%%%E
SET RANGE=
ECHO O Errorlevel eh %ERLVL%
Como criar um Menu eficiente ?
echo.
echo 1 - Rodar Programa 1
echo 2 - Rodar Programa 2
echo 3 - Sair
echo.
choice /c:123
if errorlevel 3 goto end
if errorlevel 2 goto prog2
if errorlevel 1 goto prog1
rog1
cd\prog1
prog.exe
goto end
rog2
cd\prog2
prog2.exe
:end
Como saber se algum programa está na memória, como o ANSI.SYS ?
@echo off -----
if %1'==' goto syntax
mem /c|find /i "%1">temp.tmp
copy /b temp.tmp+,, >nul
if exist temp.tmp echo Programa: %1 foi encontrado na memória.
if not exist temp.tmp echo Programa: %1 não está na memória.
if exist temp.tmp del temp.tmp
goto end
:syntax
echo Use: %0 [nome do programa]
echo Exemplo: %0 mouse
:end
Como voltar para o drive e diretório inicial ?
@echo @prompt SET OLDRV$Q$N$_SET OLDIR$Q$P >TEMP$TMP.BAT
@command /c TEMP$TMP.BAT > TEMP$$MP.BAT
@call TEMP$$MP>BAT >nul
@del TEMP$?MP.BAT
Quando este programa for executado,
%OLDRV% será o drive de onde o programa foi executado
e %OLDIR% será o diretório.
FOR..IN..DO
O comando FOR..IN..DO pode ser usado tanto em arquivos
BATch onde deve-se usar %%F (dois sinais de porcentagem e uma variável)
ou no prompt onde apenas um sinal de porcentagem é necessário,
simplificadamente, o programa faz o seguinte: "Com cada um destes, faça aquilo."
Como na maioria dos programas do DOS, basta pensar um pouco e você
poderá fazer coisas complexas com este comando, mas em sua forma mais simples, você poderia
trocar o DIR /B por FOR %F IN (*.*) DO ECHO %F
(Você precisará trocar o %F por %%F se usado em um arquivo BATch)
O %F ou %%F é apenas um variável temporária que só é ativada
enquanto o comando FOR..IN..DO está sendo executado, a letra usada "F"
não tem nenhum significado, poderia ser qualquer outra
Você poderia por exemplo usar o comando FOR..IN..DO para rodar todos
os seus programas BATch:
FOR %B IN (*.BAT) DO CALL %B
Sem variáveis livres
As variáveis são aquelas com o sinal de porcentagem, como o %PATH% e
%PROMPT% e você pode precisar aumentar o seu tamanho para poder rodar algum
programa em BATch que crias suas próprias variáveis.
Você pode aumentar o tamanho das variáveis usando o
parâmetro /E no comando SHELL do CONFIG.SYS:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:2048 /P
ou você pode fazer um ajuste temporário para o arquivo BAT
%COMSPEC% /E:2048 /C ARQUIVO.BAT
Como fazer se eu precisar usar um PATH maior do que 128 caracteres ?
uma das alternativas é usar o comando SUBST, como mostra o exemplo abaixo
SUBST K: C:\WINDOWS
e ao invés de digitar C:\WINDOWS no Path, digite apenas K:
Como não mostrar uma mensagem padrão de um programa ?
Basta usar os comandos de redirecionamente do DOS, o sinal de maior (>),
por exemplo: "Como fazer para não receber a mensagem padrão do comando PAUSE ?"
apenas digite : Pause>NUL e a mensagem "Pressione qualquer tecla para continuar..." não aparecerá
na tela, mas caso você queira armazenar essa mensagem em um arquivo basta trocar o >NUL por >arquivo.txt
Qual é a diferencá entre REM e :: ?
A diferença entre REM e :: é que usando o comando REM, o DOS lerá
toda a linha antes de não executá-la, e usando o ::, o DOS lerá apenas os ::
ignorando o resto da linha, com isto seu programa ficará mais rápido.
Como saber se existe um determinado arquivo no drive ?
CD\
DIR /B /S|FIND /i "filename.ext">FLAG.$$$
COPY /B FLAG.$$$+,,
IF EXIST FLAG.$$$ ECHO filename.ext foi encontrado
IF NOT EXIST FLAG.$$$ ECHO filename.ext não foi encontrado.
OBS Se Alguns Não pegar E PQ Eu n ME Lembrei
BOm Vamos Aos Tutoriais
Como reiniciar o computador através de um programa em BATch ?
apenas digite a linha de comando abaixo e o arquivo REBOOT.COM será criado, ao rodá-lo, o computador será reiniciado.
ECHO HPS(ALT+203)>REBOOT.COM
ou digite esta linha em um programa BATch
ECHO G=FFFF:0 | DEBUG >NUL
Inserindo Data e Hora nos seus programas
Há vários programinhas que possibilitam a inserção da data e hora, como: P2E, GET25, BATCHMAN & STRINGS
mas também existe uma solução pura do Ms-DOS:
@echo off
echo @prompt SET TIME$Q$T$_SET DATE$Q$D >TEMP$TMP.BAT
command /c TEMP$TMP.BAT > TEMP$$MP.BAT
call TEMP$$MP>BAT >nul
del TEMP$?MP.BAT
echo.
echo A Data De Hoje é: %date%
echo A Hora Agora é : %time%
echo.
set date=
set time=
Combinando arquivos em um
O comando COPY do DOS pode ser usado:
COPY *.TXT ALL.XXX
RENAME ALL.XXX ALL.TXT
ou
FOR %%f IN (*.TXT) DO TYPE %%f>>ALL.XXX
RENAME ALL.XXX ALL.TXT
A renomeação é necessária
Formatando um disco sem que o DOS faça perguntas
Com o MS-DOS 4.0+ use FORMAT A: /AUTOTEST
ou
echo n>temp.tmp
echo n>>temp.tmp
Format a: /q /vISCO>log.txt<temp.tmp
Deste modo o disco será formatado e nada aparecerá na tela.
Como saber o Errorlevel e mostrá-lo na tela ?
FOR %%E IN (0,1,2) DO IF ERRORLEVEL %%E00 SET ERLVL=%%E
IF "%ERLVL%"=="0" SET ERLVL=
SET RANGE=0,1,2,3,4,5,6,7,8,9
IF "%ERLVL%"=="2" SET RANGE=0,1,2,3,4,5
FOR %%E IN (%RANGE%) DO IF ERRORLEVEL %ERLVL%%%E0 SET ERLVL=%ERLVL%%%E
IF "%ERLVL%"=="0" SET ERLVL=
IF NOT "%ERLVL%"=="25" SET RANGE=0,1,2,3,4,5,6,7,8,9
FOR %%E IN (%RANGE%) DO IF ERRORLEVEL %ERLVL%%%E SET ERLVL=%ERLVL%%%E
SET RANGE=
ECHO O Errorlevel eh %ERLVL%
Como criar um Menu eficiente ?
echo.
echo 1 - Rodar Programa 1
echo 2 - Rodar Programa 2
echo 3 - Sair
echo.
choice /c:123
if errorlevel 3 goto end
if errorlevel 2 goto prog2
if errorlevel 1 goto prog1
rog1
cd\prog1
prog.exe
goto end
rog2
cd\prog2
prog2.exe
:end
Como saber se algum programa está na memória, como o ANSI.SYS ?
@echo off -----
if %1'==' goto syntax
mem /c|find /i "%1">temp.tmp
copy /b temp.tmp+,, >nul
if exist temp.tmp echo Programa: %1 foi encontrado na memória.
if not exist temp.tmp echo Programa: %1 não está na memória.
if exist temp.tmp del temp.tmp
goto end
:syntax
echo Use: %0 [nome do programa]
echo Exemplo: %0 mouse
:end
Como voltar para o drive e diretório inicial ?
@echo @prompt SET OLDRV$Q$N$_SET OLDIR$Q$P >TEMP$TMP.BAT
@command /c TEMP$TMP.BAT > TEMP$$MP.BAT
@call TEMP$$MP>BAT >nul
@del TEMP$?MP.BAT
Quando este programa for executado,
%OLDRV% será o drive de onde o programa foi executado
e %OLDIR% será o diretório.
FOR..IN..DO
O comando FOR..IN..DO pode ser usado tanto em arquivos
BATch onde deve-se usar %%F (dois sinais de porcentagem e uma variável)
ou no prompt onde apenas um sinal de porcentagem é necessário,
simplificadamente, o programa faz o seguinte: "Com cada um destes, faça aquilo."
Como na maioria dos programas do DOS, basta pensar um pouco e você
poderá fazer coisas complexas com este comando, mas em sua forma mais simples, você poderia
trocar o DIR /B por FOR %F IN (*.*) DO ECHO %F
(Você precisará trocar o %F por %%F se usado em um arquivo BATch)
O %F ou %%F é apenas um variável temporária que só é ativada
enquanto o comando FOR..IN..DO está sendo executado, a letra usada "F"
não tem nenhum significado, poderia ser qualquer outra
Você poderia por exemplo usar o comando FOR..IN..DO para rodar todos
os seus programas BATch:
FOR %B IN (*.BAT) DO CALL %B
Sem variáveis livres
As variáveis são aquelas com o sinal de porcentagem, como o %PATH% e
%PROMPT% e você pode precisar aumentar o seu tamanho para poder rodar algum
programa em BATch que crias suas próprias variáveis.
Você pode aumentar o tamanho das variáveis usando o
parâmetro /E no comando SHELL do CONFIG.SYS:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:2048 /P
ou você pode fazer um ajuste temporário para o arquivo BAT
%COMSPEC% /E:2048 /C ARQUIVO.BAT
Como fazer se eu precisar usar um PATH maior do que 128 caracteres ?
uma das alternativas é usar o comando SUBST, como mostra o exemplo abaixo
SUBST K: C:\WINDOWS
e ao invés de digitar C:\WINDOWS no Path, digite apenas K:
Como não mostrar uma mensagem padrão de um programa ?
Basta usar os comandos de redirecionamente do DOS, o sinal de maior (>),
por exemplo: "Como fazer para não receber a mensagem padrão do comando PAUSE ?"
apenas digite : Pause>NUL e a mensagem "Pressione qualquer tecla para continuar..." não aparecerá
na tela, mas caso você queira armazenar essa mensagem em um arquivo basta trocar o >NUL por >arquivo.txt
Qual é a diferencá entre REM e :: ?
A diferença entre REM e :: é que usando o comando REM, o DOS lerá
toda a linha antes de não executá-la, e usando o ::, o DOS lerá apenas os ::
ignorando o resto da linha, com isto seu programa ficará mais rápido.
Como saber se existe um determinado arquivo no drive ?
CD\
DIR /B /S|FIND /i "filename.ext">FLAG.$$$
COPY /B FLAG.$$$+,,
IF EXIST FLAG.$$$ ECHO filename.ext foi encontrado
IF NOT EXIST FLAG.$$$ ECHO filename.ext não foi encontrado.
Comment