对于运行Windows server的服务器来讲,使用CMD来完成系统的一些自动化运行是必不可少的,当然可以使用CMD来实现,但是CMD所使用的语言过于久远,现在重新学习的成本并不低,且在现在的编程中价值并不高,而且CMD也不具备一些新的功能。而任何一台装有最新Windows系统的电脑,都带有.Net,因此可以通过CMD来启动.Net中的csc后,再后面的代码编译成exe程序,然后运行。
这样做的优点在于,不需要安装庞大的Visual Studio软件,缺点就是测试程序会比较麻烦。为了方便编辑,可以使用一些专门用于写代码的记事本软件,例如Notepad++等,当然用系统自带的记事本也没什么问题。
1.用C#代码直接运行
将以下代码复制到记事本中,并将记事本的后缀名称改成”bat”就行了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@echo off 2>nul 3>nul ::需要安装.Net Framework 2.0及以上 set "netpath=%systemroot%\Microsoft.NET\Framework" for /f "delims=" %%a in ('dir /ad /b "%netpath%\v?.*"') do ( if exist "%netpath%\%%a\csc.exe" ( set "cscpath=%netpath%\%%a\csc.exe" goto :0 ) ) :0 >"%tmp%\$" more +15 "%~f0" "%cscpath%" /out:"%tmp%\$Onekey.exe" "%tmp%\$" "%tmp%\$Onekey.exe" pause&exit ::C# //以下编写C#代码 |
用C#做了一个关于系统启动时间计算程序,运行的结果如下:

其原理就是用CMD来运行.Net,先将”::C#”后面的代码转换成一个单独的,再用.Net中的csc来编译后运行,在实际运行中,可以在临时文件夹中找到对应名称的exe文件和储存代码的文件,也就是上面的”%tmp%\$Onekey.exe”和 “%tmp%\$” 。

如果单独执行生成的exe文件,也可以达到和通过CMD运行一样的效果,当然如果使用exe来运行,也自然就无法像bat文件这样方便编辑了。
2.将C#代码编译exe程序
如果只是想将编译里面的C#代码,可以直接使用.Net自带的csc.exe来实现,同样,以下内容编辑成bat文件后运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@echo off 2>nul 3>nul ::需要安装.Net Framework 2.0及以上 set "netpath=%systemroot%\Microsoft.NET\Framework" for /f "delims=" %%a in ('dir /ad /b "%netpath%\v?.*"') do ( if exist "%netpath%\%%a\csc.exe" ( set "cscpath=%netpath%\%%a\csc.exe" goto :0 ) ) :0 echo "C:\$Onekey.exe" 修改成你要输出的文件名称及路径 echo "C:\$" 修改为你代码的储存路径和文件名称 "%cscpath%" /out:"C:\$Onekey.exe" "C:\$" pause&exit |
3.用CMD直接进行编译
可以直接在CMD输入命令
1 2 3 4 5 6 7 8 |
//在csc后面输入待编译的文件路径 //可以自行更改所使用的.Net版本,具体的可以到下方的目录下查看,本例子使用的是v4.0.30319 //"C:\1.exe" 修改成你要输出的文件名称及路径 //"C:\a.txt" 修改为你代码的储存路径和文件名称 //将下面的代码复制到CMD中运行 cd %systemroot%\Microsoft.NET\Framework\v4.0.30319 csc /out:C:\a.txt C:\1.exe |
4.制作一个通用的bat程序
可以用CMD命令来实现在CMD中输入源代码路径和输出路径来实现,做一个通用的bat程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@echo off 2>nul 3>nul ::需要安装.Net Framework 2.0及以上 set "netpath=%systemroot%\Microsoft.NET\Framework" for /f "delims=" %%a in ('dir /ad /b "%netpath%\v?.*"') do ( if exist "%netpath%\%%a\csc.exe" ( set "cscpath=%netpath%\%%a\csc.exe" goto :0 ) ) :0 set input= set /p input=请输入代码所在的目录及文件名称: set output= set /p output=请输入输出文件夹路径及文件名称: "%cscpath%" /out:"%output%" "%input%" pause&exit |
最终的执行结果
