如何在批处理文件中执行class.cs并插入到现有命令之间
问题:能否在批处理两条命令间执行C#类文件?
我正在运行如下批处理文件,想在两条命令之间加入执行class.cs(C#类文件)的操作,请问可行吗?
原批处理代码:
echo off set CUR_YYYY=%date:~10,4% set CUR_MM=%date:~4,2% set CUR_DD=%date:~7,2% set CUR_HH=%time:~0,2% if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%) set CUR_NN=%time:~3,2% set CUR_SS=%time:~6,2% set CUR_MS=%time:~9,2% set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS% (py tool.py -p COM8 write_flash 0x20200 diags_0.0.15.bin py tool.py -p COM8 write_flash 0x1c0088 diags_0.0.15.bin) > log_%SUBFILENAME%.txt
我尝试的修改方案:
echo off set CUR_YYYY=%date:~10,4% set CUR_MM=%date:~4,2% set CUR_DD=%date:~7,2% set CUR_HH=%time:~0,2% if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%) set CUR_NN=%time:~3,2% set CUR_SS=%time:~6,2% set CUR_MS=%time:~9,2% set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS% (py tool.py -p COM8 write_flash 0x20200 diags_0.0.15.bin echo class.cs py tool.py -p COM8 write_flash 0x1c0088 diags_0.0.15.bin) > log_%SUBFILENAME%.txt
回答
你当前的修改只是输出class.cs字符串,并没有真正执行这个C#类文件。C#源文件无法直接通过批处理执行,必须先编译成可执行程序,或者使用.NET CLI直接运行源文件(适用于.NET Core/.NET 5+环境)。
以下是两种可行的修改方式:
方式1:使用.NET CLI直接运行C#源文件(推荐,无需提前编译)
如果你的环境已经安装了.NET Core/.NET 5+ SDK,可以直接用dotnet run命令执行class.cs:
echo off set CUR_YYYY=%date:~10,4% set CUR_MM=%date:~4,2% set CUR_DD=%date:~7,2% set CUR_HH=%time:~0,2% if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%) set CUR_NN=%time:~3,2% set CUR_SS=%time:~6,2% set CUR_MS=%time:~9,2% set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS% (py tool.py -p COM8 write_flash 0x20200 diags_0.0.15.bin dotnet class.cs # 单文件C#程序可直接用此命令 py tool.py -p COM8 write_flash 0x1c0088 diags_0.0.15.bin) > log_%SUBFILENAME%.txt
注意:如果class.cs依赖其他类库或项目文件,需使用dotnet run --project指定项目目录。
方式2:提前编译C#文件为可执行程序
先通过csc(C#编译器)将class.cs编译成class.exe,然后在批处理中直接调用:
echo off set CUR_YYYY=%date:~10,4% set CUR_MM=%date:~4,2% set CUR_DD=%date:~7,2% set CUR_HH=%time:~0,2% if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%) set CUR_NN=%time:~3,2% set CUR_SS=%time:~6,2% set CUR_MS=%time:~9,2% set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS% (py tool.py -p COM8 write_flash 0x20200 diags_0.0.15.bin class.exe # 直接调用编译后的可执行文件 py tool.py -p COM8 write_flash 0x1c0088 diags_0.0.15.bin) > log_%SUBFILENAME%.txt
编译命令示例:csc class.cs,需确保csc.exe在系统PATH中,或使用完整路径(如C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe)。
另外,当前的括号包裹方式已经会把三条命令的输出都重定向到日志文件,无需额外修改。
内容的提问来源于stack exchange,提问作者PB stack
相关产品推荐
相关产品推荐

