【发布时间】:2019-11-06 08:02:41
【问题描述】:
我有一个给定的 C# 可执行文件,我想在这个可执行文件中执行一个批处理文件。批处理文件设置环境变量,其中一些操作以其他环境变量(IF条件)为条件。
我希望在可执行文件本身内部设置这些环境变量,以便在当前可执行文件上设置环境变量。
当我编写类似“C# 执行批处理相同进程”之类的内容时,我可以在我们的朋友 google 上找到的所有方法似乎都是基于方法 System.Diagnostics.Process 方法,它在不同的进程上执行批处理文件。
谢谢
【问题讨论】:
-
“在这个可执行文件中执行批处理文件”到底是什么意思?命令行将处理您的批处理文件(这显然是一个不同的过程)。您是否尝试使用可以解释批处理文件并直接对命令执行操作的 C# 代码?如果是这样,我的下一个问题将是“为什么?”你能解释一下你的用例吗?我真的想不出为什么
System.Diagnostics.Process在大多数情况下是不够的。 -
嗯,afaik 在 dotnet 框架(也不是核心)中没有内部批处理执行器,所以这就是你要做的。您可以做的是将脚本引擎嵌入到您的可执行文件中,但如果您想(或必须)坚持使用批处理,那么可以使用 Process...
-
这听起来像XY problem。更好地解释你的场景。你的意思是在你
Porcess.Start()一个批处理文件执行一些set X=Y调用之后,你希望你的.NET 可执行文件在你调用System.Environment.GetEnvironmentVariable("X")时返回这些变量? -
您可以从批处理文件中执行您的可执行文件,这将使可执行文件使用与批处理文件使用(并设置/修改)相同的环境(关于环境变量)。跨度>
-
为什么需要使用批处理文件来执行此操作?您可以直接在 C# 中设置环境变量。
标签: c# batch-file