Um arquivo BAT é composto por instruções a serem executadas sequencialmente. Sua execução geralmente é agendadas e costuma efetuar tarefas em lote.
Na maioria dos casos, as tarefas são específicas e dificilmente precisam ser alteradas. Porém, em alguns momentos, é necessário que o arquivo obtenha informações dinâmicas de outras fontes de dados.
E é neste momento que a plataforma .NET se demonstra muito útil! Linguagens de outras plataformas, como Java por exemplo, também são capazes de realizar esta tarefa, porém neste post, utilizaremos a linguagem C# da plataforma .NET.
Embora o exemplo a seguir seja um tanto quanto simplista, ele permite ter uma ideia do potencial de arquivos bat.
No exemplo a seguir criaremos uma classe dinamicamente e geraremos um arquivo bat responsável pela compilação da mesma, transformando esta em uma dll. Para tal, criaremos um projeto do tipo Console:
A codificação da classe program será a seguinte:
string className = "testeBuild"; string folderPath = @"c:\temp\"; StringBuilder sBuilderClasse = new StringBuilder(); sBuilderClasse.AppendLine("using System;"); sBuilderClasse.AppendLine("namespace CompileViaBatDemo"); sBuilderClasse.AppendLine("{"); sBuilderClasse.AppendLine(" public class " + className); sBuilderClasse.AppendLine(" {"); sBuilderClasse.AppendLine(" public string Hello { "); sBuilderClasse.AppendLine(" get { "); sBuilderClasse.AppendLine(" return \"Hi\";"); sBuilderClasse.AppendLine(" } "); sBuilderClasse.AppendLine(" }"); sBuilderClasse.AppendLine(" }"); sBuilderClasse.AppendLine("}"); File.WriteAllText(string.Format("{0}{1}.cs", folderPath, className), sBuilderClasse.ToString(), Encoding.UTF8); StringBuilder sBuilderBat = new StringBuilder(); sBuilderBat.AppendLine(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library " + string.Format("{0}{1}.cs", folderPath, className)); sBuilderBat.AppendLine(@"del " + string.Format("{0}{1}.cs", folderPath, className)); sBuilderBat.AppendLine(@"del " + string.Format("{0}{1}.bat", folderPath, className)); sBuilderBat.AppendLine(@"pause"); File.WriteAllText(string.Format("{0}{1}.bat", folderPath, className), sBuilderBat.ToString(), Encoding.ASCII);
Ao executar este código, será gerado no diretório "c:\temp" nossa classe e o arquivo bat.
Quando o arquivo bat criado é executado, o mesmo gera a dll a partir da compilação da classe, deleta a classe e em seguida a si mesmo.
Ao Importar a dll criada no Visual Studio, é possível consumir sua classe.
Nenhum comentário:
Postar um comentário