Блог → Программирование

Использование 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);
    }
}

Улучшения следующие:

Сначала идет код для командного интерпретатора Windows, а затем — код на C#. При запуске скрипт компилирует сам себя: cmd.exe выполняет код сверху, а компилятор C# видит этот код как комментарий. Поддерживается .NET Framework версий от 2.0 до 4.5. Последней версии в коде не указано, но так как 4.5 устанавливается в папку 4.0, всё работает.

Осталось теперь придумать зачем это надо. C# — не скриптовый язык, поэтому без IDE с автодополнением и подсказками очень неудобно.

28 декабря 2012 22:35 

Комментарии


qertis
qertis — 8 лет назад blog.baskovsky.ru
Спасибо!
Очень удобный подход для создания автоматизированных скриптов (реорганизация директорий или массовое переименование файлов). А главное, удобно написав в VS, поделиться с другом по почте. И запуская, не требовать права подтверждения администратора!

DuMOHsmol
DuMOHsmol — 8 лет назад anothersite.ru
Рад помочь :)
Очень удобный подход для создания автоматизированных скриптов (реорганизация директорий или массовое переименование файлов).
Есть же Powershell для этого. Хотя, честно говоря, я бы и сам быстрее на C# написал.

Ваше имя Сайт или блог (опционально) Аватар (опционально, e-mail для Gravatar или ссылка на картинку с ipic.su) Текст комментария

Справка по написанию комментария

  • Для вставки аватара зарегиструйтесь на сервисе Gravatar и укажите ваш e-mail. Вы также можете загрузить аватар на http://ipic.su и скопировать текст с поля «прямая ссылка». Другие сервисы или хостинги изображений не поддерживаются. Большие изображения будут уменьшены автоматически. Пример:

    http://ipic.su/img/img7/fs/user4.1358962896.png
  • Имя, адрес и аватар сохраняются, второй раз вводить не придётся
  • Кликните на аватар, чтобы вставить имя пользователя
  • Слово обрамлённое «звёздочками» становится *жирным*
  • Адрес ссылки автоматически становится ссылкой — http://anothersite.ru
  • Ссылки на текст с http://pastebin.com автоматически разворачиваются в тексте комментария
  • Цитату следует начинать со знака «больше»:
    > пример многострочной
    > цитаты