我想要实现的是一个没有毒性输出的自编译的c#文件。我试图用Console.MoveBufferArea方法实现此目的,但看起来不起作用。例如, - 保存下面的代码.bat
扩展:获取没有C#最后一行的控制台缓冲区?
// 2>nul||@goto :batch
/*
:batch
@echo off
setlocal
:: find csc.exe
set "frm=%SystemRoot%\Microsoft.NET\Framework\"
for /f "tokens=* delims=" %%v in ('dir /b /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
set netver=%%v
goto :break_loop
)
:break_loop
set csc=%frm%%netver%\csc.exe
:: csc.exe found
%csc% /nologo /out:"%~n0.exe" "%~dpsfnx0"
%~n0.exe
endlocal
exit /b 0
*/
public class Hello
{
public static void Main() {
ClearC();
System.Console.WriteLine("Hello, C# World!");
}
private static void ClearC() {
System.Console.MoveBufferArea(
0,0,
System.Console.BufferWidth,System.Console.BufferHeight-1,
0,0
);
}
}
输出将是:
C:\>// 2>nul ||
Hello, C# World!
什么要的是摆脱// 2>nul ||
。是的,可以吗?我的逻辑(ClearC
方法)有什么问题吗?我需要PInvoke吗?
难道你不能只使用'Console.Clear();'? – Jashaszun
@Jashaszun - 我甚至可以用'cls'命令批量执行,但如果可能的话,我想保留历史命令。只是因为它会更加流畅。 – npocmaka
这是一个与批处理命令/批处理文件相关的问题,而不是C#...或者? – elgonzo