ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Статьи (https://forum.antichat.xyz/forumdisplay.php?f=30)
-   -   Код С# в bat-файле (https://forum.antichat.xyz/showthread.php?t=240255)

Unknown 07.11.2010 18:15

Маленькая забавность о том, как использовать все возможности dotNet в обычных bat-скриптах. Или сделать скриптовый язык из С#.

Далее рассказан простой способ скомпилировать и запустить код С#, который находится внутри bat-файла.

Не буду долго томить:

Цитата:

Сообщение от None
/*
@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 и запускаем его.

Компилятор .Net Framework'a, csc в качестве аргумента принимает путь к файлу с исходником. В нашем случае исходник находится в теле bat-файла(строки 13–20). Текст bat-команд игнорируется, как комментарий(строки 1 и 11).

После работы компилятора, получаем исполняемый файл, который запускаем и удаляем после завершения его работы.

Работа bat-интерпретатора заканчивается на 10 строке (exit).

Этот подход работает на Vista/7 «из коробки» и на ХР, с установленным .Net Framework.

Целесообразность, конечно, сомнительная. Так, just for fun.

http://habrahabr.ru/blogs/net/107659/#habracut​


От себя:

Проверил на себе, идея хорошая. Уже есть пара мыслей как это хитро применить. Работают все немспейсы, можно указывать через using. И да, работают даже винформсы!

j-prof 07.11.2010 18:26

ааааааааааааааааааааааааа ааааа люблю тя ты мой герой ппц круто

я фигею ааааааааааааааааааааааааа ааааааааааааааааааааааааа

N@b$ter 07.11.2010 18:30

прикольная тема, очень познавательно. Можут очень помочь

Дикс 07.11.2010 18:30

выполнение питона в браузере

j-prof 07.11.2010 18:31

Цитата:

Сообщение от Дикс

ну эт не интересно

Unknown 07.11.2010 20:20

Цитата:

Сообщение от j-prof
ааааааааааааааааааааааааа ааааа люблю тя ты мой герой ппц круто
я фигею ааааааааааааааааааааааааа ааааааааааааааааааааааааа

Да это не этот сделал, а умный с хабры. А этот просто скопировал.

j-prof 07.11.2010 23:51

Цитата:

Сообщение от Charle
Да это не этот сделал, а умный с хабры. А этот просто скопировал.

и за это спасибо я б без него не узнал про это

я на ачате сижу а не на "хабре"

aka_zver 08.11.2010 01:06

шутники бля =\

DeepBlue7 08.11.2010 03:10

Цитата:

Сообщение от aka_zver
шутники бля =\

Очень информационно насыщенный пост.

А по теме, есть пару вариантов заюзать Спасибо.

bad_boy 09.11.2010 01:32

Цитата:

Сообщение от Charle
Да это не этот сделал, а умный с хабры. А этот просто скопировал.

Это, вообще, давно известно было и до "умного" с хабры. Для C# довольно бесполезная вещь.


Время: 00:25