О том, как можно использовать возможности dotNet в bat-скриптах. В записи описан простой способ как можно скомпилировать и запустить код С#, который написан внутри bat-файла.
Пример:
- /*
- @echo off && cls
- set WinDirNet=%WinDir%\Microsoft.NET\Framework
- IF EXIST "%WinDirNet%\v2.0.50727\csc.exe" set csc="%WinDirNet%\v2.0.50727\csc.exe"
- IF EXIST "%WinDirNet%\v3.5\csc.exe" set csc="%WinDirNet%\v3.5\csc.exe"
- IF EXIST "%WinDirNet%\v4.0.30319\csc.exe" set csc="%WinDirNet%\v4.0.30319\csc.exe"
- %csc% /nologo /out:"%~0.exe" %0
- "%~0.exe"
- del "%~0.exe"
- exit
- */
- class HelloWorld
- {
- static void Main()
- {
- System.Console.WriteLine("Hello, World!\r\nI am at " + System.Environment.Version);
- System.Console.ReadLine();
- }
- }
Опишем, как это выходит.
Поначалу срабатывает bat-интерпретатор. Первую строку скрипта он не поймет и выдаст ошибку. Но это не страшно, чисто визуальное неудобство. Очистим текст ошибки во второй строчке. Теперь пробуем найти папку с компилятором csc.exe, запускаем его. Компилятор csc Net Framework'a в качестве аргумента берет адрес файла с исходным кодом. В нашем примере исходный код находится в теле bat-файла(строка 12–19). Текст bat-команд игнорируется, как комментарий (строка 1 -11).
После работы компилятора, мы получим исполняемый файл, который запускается и удаляется после завершения его работы.
Работа bat-интерпретатора закончиться на 10 строке (exit).
Подход будет работать в Windows Vista/7 «из коробки» и на Windows ХР, с установленным .Net Framework.
Перепечатано: http://habrahabr.ru/blogs/net/107659/