Код С# в bat-файле

О том, как можно использовать возможности dotNet в bat-скриптах. В записи описан простой способ как можно скомпилировать и запустить код С#, который написан внутри bat-файла.


Пример:

  1. /*
  2. @echo off && cls
  3. set WinDirNet=%WinDir%\Microsoft.NET\Framework
  4. IF EXIST "%WinDirNet%\v2.0.50727\csc.exe" set csc="%WinDirNet%\v2.0.50727\csc.exe"
  5. IF EXIST "%WinDirNet%\v3.5\csc.exe" set csc="%WinDirNet%\v3.5\csc.exe"
  6. IF EXIST "%WinDirNet%\v4.0.30319\csc.exe" set csc="%WinDirNet%\v4.0.30319\csc.exe"
  7. %csc% /nologo /out:"%~0.exe" %0
  8. "%~0.exe"
  9. del "%~0.exe"
  10. exit
  11. */
  12. class HelloWorld
  13. {
  14. static void Main()
  15. {
  16. System.Console.WriteLine("Hello, World!\r\nI am at " + System.Environment.Version);
  17. System.Console.ReadLine();
  18. }
  19. }

Опишем, как это выходит.

Поначалу срабатывает 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/

Понравилось? =) Поделись с друзьями:

Обсудить