 |

07.11.2010, 18:15
|
|
Новичок
Регистрация: 21.06.2005
Сообщений: 1
С нами:
10992741
Репутация:
0
|
|
Маленькая забавность о том, как использовать все возможности 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. И да, работают даже винформсы!
|
|
|

07.11.2010, 18:26
|
|
Постоянный
Регистрация: 29.08.2010
Сообщений: 321
С нами:
8265206
Репутация:
-4
|
|
ааааааааааааааааааааааааа ааааа люблю тя ты мой герой ппц круто
я фигею ааааааааааааааааааааааааа ааааааааааааааааааааааааа
|
|
|

07.11.2010, 18:30
|
|
Новичок
Регистрация: 06.10.2009
Сообщений: 3
С нами:
8734848
Репутация:
0
|
|
прикольная тема, очень познавательно. Можут очень помочь
|
|
|

07.11.2010, 18:30
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами:
10562786
Репутация:
537
|
|
|
|
|

07.11.2010, 18:31
|
|
Постоянный
Регистрация: 29.08.2010
Сообщений: 321
С нами:
8265206
Репутация:
-4
|
|
|
|
|

07.11.2010, 20:20
|
|
Новичок
Регистрация: 21.06.2005
Сообщений: 1
С нами:
10992741
Репутация:
0
|
|
Сообщение от j-prof
ааааааааааааааааааааааааа ааааа люблю тя ты мой герой ппц круто
я фигею ааааааааааааааааааааааааа ааааааааааааааааааааааааа
Да это не этот сделал, а умный с хабры. А этот просто скопировал.
|
|
|

07.11.2010, 23:51
|
|
Постоянный
Регистрация: 29.08.2010
Сообщений: 321
С нами:
8265206
Репутация:
-4
|
|
Сообщение от Charle
Да это не этот сделал, а умный с хабры. А этот просто скопировал.
и за это спасибо я б без него не узнал про это
я на ачате сижу а не на "хабре"
|
|
|

08.11.2010, 01:06
|
|
Постоянный
Регистрация: 17.09.2009
Сообщений: 775
С нами:
8762549
Репутация:
1069
|
|
шутники бля =\
|
|
|

08.11.2010, 03:10
|
|
Познающий
Регистрация: 02.01.2009
Сообщений: 90
С нами:
9134867
Репутация:
44
|
|
Сообщение от aka_zver
шутники бля =\
Очень информационно насыщенный пост.
А по теме, есть пару вариантов заюзать Спасибо.
|
|
|

09.11.2010, 01:32
|
|
Новичок
Регистрация: 30.12.2004
Сообщений: 10
С нами:
11242289
Репутация:
0
|
|
Сообщение от Charle
Да это не этот сделал, а умный с хабры. А этот просто скопировал.
Это, вообще, давно известно было и до "умного" с хабры. Для C# довольно бесполезная вещь.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|