doskey subl = "%ProgramFiles%\Sublime Text 2\sublime_text.exe" $*
subl meu-arquyivo-texto.ext
doskey subl = "%ProgramFiles%\Sublime Text 2\sublime_text.exe" $*
subl meu-arquyivo-texto.ext
c:\temp>dir | clip
c:\temp>clip < arquivo.txtNão sei quanto a você, mas quando eu descobri este pequeno utilitário minha vida no console ficou muito mais fácil.
Para muitos usuários (e mesmo desenvolvedores) do Windows o conceito de arquivo esta tão sedimentado que muitas vezes melhorias significativas no sistema de arquivos deste sistema operacional (no caso o NTFS) são ignoradas.
Neste post apresento um dos recursos mais desconhecidos, stream alternativas de dados ou ADS (do inglês, Alternate Data Stream).
Para compreendermos este recurso é necessário primeiro definirmos (ou relembrarmos) alguns conceitos:
Como o Windows não possui meios (tanto no Explorer quanto no console) para detectar / mostrar arquivos que possuem ADS, abaixo listei algumas ferramentas úteis para tal finalidade:
Usando ADSs
A forma mais simples para demonstrarmos este conceito é através do console do Windows. Abra o console (cmd.exe) e digite:
echo teste de streams > teste.txt:dados
Simples assim! O comando acima cria uma stream chamada dados com o conteúdo teste de streams.
Agora você pode conferir que o arquivo teste.txt foi criado mas o comando dir reporta o mesmo com 0 (zero) bytes.
Finalmente, para visualisar o conteúdo da stream digite
more < teste.txt:dados
Abaixo apresento um pequeno programa de exemplo para criar ADSs (note que o mesmo não possui nenhum tratamento especial, ou seja, a forma de acessar data streams alternativas é idêntica à utilizada para acessar a data stream default).
#include "stdio.h"#include "Windows.h" void main(int argc, char *argv[])
{HANDLE handle;
if (argc < 3) { printf("Nome da stream (formato: arquivo.ext:stream) ou dados nao especificados.\r\nUso: ads.exe nome-stream dados"); return;}
else { printf("\r\nGravando dados em %s", argv[1]);}
handle = CreateFile(argv[1],
GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
0, 0);
if (handle != INVALID_HANDLE_VALUE) {DWORD numberOfBytesWritten;
int n = WriteFile( handle, argv[2],
strlen(argv[2]),
&numberOfBytesWritten,
NULL);
printf("\r\n%ld bytes gravados", numberOfBytesWritten);CloseHandle(handle);
}
else { printf("Não foi possivel criar a stream de dados.");}
}
experimente executar o programa com alguns parâmetros como por exemplo:
ads teste.txt:dados "Teste de streams"
É isso ai.
Até a próxima.

"Eu sei como fazer para funcionar! Quer que eu te ensine?"Ótimo, pensei comigo mesmo! Posso ser orgulhoso e dizer que não (afinal de contas, sou mais capacitado para resolver problemas com computadores que um adolescente de 13 anos) e tentar resolver o problema (ou tentar outro computador) ou responder sim e ver no que dava. Bom, depois de infindáveis 3 segundos, respondi que sim; então o adolescente abriu um sorriso, pediu licença, pegou o teclado da minha mão e saiu pressionando o mesmo como louco (na realidade de forma ordenada :). É claro que eu entendi o que ele estava fazendo (abrindo o Windows Explorer e copiando o executável do jogo de uma pasta compartilhada na rede, que supostamente estava livre do vírus). Algumas teclas pressionadas depois e pronto! Ele vira novamente para mim e diz:
"Pronto, pode jogar!"Eu conversei um pouco mais com ele, agradeci e tentei executar o jogo novamente... Bum! O mesmo problema! Comentei que não havia funcionado e o adolescente disse que ele havia se deparado com o mesmo problema e que este procedimento havia funcionado para ele. Pensei por alguns instantes e comentei que o vírus poderia ter infectado o programa novamente (enquanto conversávamos). Então copiei o executável do jogo novamente (é claro que ele me ajudou a encontrar a pasta da rede onde eu poderia encontrar o executável) e tentei novamente... Agora sim o jogo carregou e pude me divertir :) O que mais me chamou a atenção neste acontecimento? Um adolescente me auxiliando a solucionar problemas em um computador :) é... sinais dos tempos!!!!! Adriano