Использование C# в bat файле
На «Хабрахабре» выкладывали статью о создании *.bat файлов, выполняющих код на C#. К сожалению, ту статью почему-то удалили, но сам код у меня остался. Ниже его доработанная и исправленная версия:
/*
@echo off && cls && echo Loading... && echo.
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"
if "%csc%" == "" ( echo .NET Framework not found! && echo. && pause && exit )
%csc% /nologo /out:"%~dpnx0.exe" "%~dpnx0"
if not "%ERRORLEVEL%" == "0" ( echo. && pause && exit )
cls
"%~dpnx0.exe" %*
del "%~dpnx0.exe"
exit
*/
using System;
class HelloWorld
{
static void Main(string[] args)
{
Console.ForegroundColor = System.ConsoleColor.Cyan;
Console.Title = "Test application";
Console.WriteLine("Hello, World!\r\nI am at " + System.Environment.Version);
int i = 0;
foreach (string item in args)
{
Console.WriteLine(i+": "+item);
i++;
}
Console.ReadKey(true);
}
}
Улучшения следующие:
- Сообщение о загрузке программы
- В случае ошибки компиляции cmd.exe не закрывается и показывает текст ошибки
- Программе можно передавать параметры
- Скрипт корректно запускается как при клике, так и вызове из командной строки, ярлыка и т.д.
Сначала идет код для командного интерпретатора Windows, а затем — код на C#. При запуске скрипт компилирует сам себя: cmd.exe выполняет код сверху, а компилятор C# видит этот код как комментарий. Поддерживается .NET Framework версий от 2.0 до 4.5. Последней версии в коде не указано, но так как 4.5 устанавливается в папку 4.0, всё работает.
Осталось теперь придумать зачем это надо. C# — не скриптовый язык, поэтому без IDE с автодополнением и подсказками очень неудобно.
Комментарии
Очень удобный подход для создания автоматизированных скриптов (реорганизация директорий или массовое переименование файлов). А главное, удобно написав в VS, поделиться с другом по почте. И запуская, не требовать права подтверждения администратора!
accident (stumbleupon). I've book-marked it for later! https://Best20Inusa.Wordpress.com/
thought i could also make comment due to this sensible
paragraph. https://22Betnz.Wordpress.com/
Is it hard to set up your own blog? I'm not very techincal but I can figure things out pretty quick.
I'm thinking about creating my own but I'm not sure where to begin. Do
you have any points or suggestions? Many thanks https://Biznesnewss.com/obshhe...yj-podarok.html
me to pay a visit this web page, it includes valuable Information. https://Vgolos.org/idei-shcho-...mu-cholovikovi/
of clever work and reporting! Keep up the amazing works guys I've incorporated
you guys to my own blogroll. https://newsyou.info/2025/05/s...ivannya-sigaret
and you're simply extremely great. I really like what you've received right here, certainly like what you are saying and the best way by which you
say it. You are making it enjoyable and you continue to care for to
stay it sensible. I cant wait to learn far more
from you. That is actually a wonderful site. https://mymedia.Com.ua/kak-udi...-dlya-podarkov/
my time here at web, however I know I am getting experience every day by reading such nice
content. https://Kompromis.info/2025/05...o-cholovka.html
to return the favor?.I'm trying to to find issues to improve my site!I guess its ok to
use some of your concepts!! https://mostmedia.com.ua/porad...hovogo-sugloba/
up here Использование C# в bat файле — DuMOHsmol's page.
And I do have a couple of questions for you if you
tend not to mind. Is it just me or does it
give the impression like some of these remarks come across as if they are coming
from brain dead individuals? :-P And, if you are posting at other
places, I'd like to keep up with everything new you have to post.
Could you list of every one of all your public pages like your twitter feed, Facebook page
or linkedin profile? https://kyivweekly.com/ukraine...ovanomu-centri/
You have some really great articles and I believe I
would be a good asset. If you ever want to take some of the load off, I'd really like to write some material for
your blog in exchange for a link back to mine.
Please blast me an email if interested. Thanks! https://massmedia.one/zdorovia...dnovlennya.html