11 de janeiro de 2012

Batch uso do for

Pequeno batch que separa os dados da saida de um comando e permite utiliza-las

tokens=3,4 são separados por delims= e utilizados em %%i e %%j
pode ser util...


@echo off
dir /os > teste
FOR /F "tokens=3,4 skip=5 delims= " %%i in (teste) do (
if %%i LEQ 050 (echo "%%j" is a nice file only "%%i" bytes)
)

8 de janeiro de 2012

Junção de diretórios no Windows

A Microsoft possui uma solução semelhante ao ln -s do Linux desde Setembro de 2010 para Windows XP que chama junction: http://technet.microsoft.com/en-us/sysinternals/bb896768.
No Windows 7 pode ser usado pelo comando mklink /j
Ele cria um link para outro diretório possibilitando o acesso via prompt a outra pasta, interessante pra usar com softwares como o opessh, mas não funciona com o compartilhamento do windows (smb.cifs)

Desligar / Suspender Windows

Segue um script básico para desligar / suspender PC com Windows conforme o tempo requerido, funciona para XP e 7, não testei no Vista.
@echo off
title Desligando

:inicio
cls&color 8F
echo Digite 1 para Desligar
echo Digite 2 para Suspender
echo Digite 3 para Sair

if exist %systemroot%\system32\choice.exe (goto cchoice) ELSE (set /p acao=[1,2]? )
goto ccontinue

:cchoice
choice /c 123 /d 3 /t 15
set acao=%errorlevel%

:ccontinue
if %acao% EQU 1 goto desligar
if %acao% EQU 2 goto suspender
if %acao% EQU 3 exit
goto inicio


:desligar
set /p tempo=Digite minutos para desligar o PC:
set /a desliga=tempo*60

if %desliga% LSS 1 goto invalido

shutdown /f /s /t %desliga%
echo.&echo.

set /p sair=Pressione 1 para cancelar o desligamento, ou Enter para sair:
if %sair% EQU 1 shutdown /a
exit

:invalido
color 4C
cls&echo Caracter invalido: %desliga%, por favor digite um numero maior que 0
pause > nul
goto inicio

:suspender
if not exist %systemroot%\system32\psshutdown.exe goto download
set /p tempo=Digite minutos para Suspender o PC:
set /a desliga=tempo*60

if %desliga% LSS 1 goto invalido

psshutdown /f /d /t %desliga%
echo.&echo.

set /p sair=Pressione 1 para cancelar o desligamento, ou Enter para sair:
if %sair% EQU 1 psshutdown /a
exit

:download
cls&color 1E
echo.&echo.&echo Software que suspende a maquina nao encontrado
echo ao pressionar uma tecla sera direcionado a pagina de download
echo.&echo.&pause
explorer http://download.sysinternals.com/Files/PsTools.zip
explorer %systemroot%\system32\
echo.&echo.&echo Apos o download do software,
echo Copie o programa psshutdown.exe para a pasta %systemroot%\system32\
pause
goto suspender