You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从C#应用输出字符串并捕获到PowerShell或CMD变量中?

没问题!要实现这个需求其实很简单,核心就是让你的C#程序把要传递的字符串输出到标准输出(stdout),然后在CMD或者PowerShell里直接捕获这个输出就行。下面分两种环境给你具体的实现方案:

在CMD中捕获字符串变量

首先在你的C#代码里,用Console.WriteLine()或者Console.Write()把目标字符串输出到标准输出(别用Console.Error,那是错误输出流,CMD默认不捕获):

// C#示例代码
using System;

class Program
{
    static void Main()
    {
        // 输出要传递的字符串
        Console.WriteLine("这是从C#程序输出的字符串内容");
        // 如果需要无换行的输出,用Console.Write
        // Console.Write("无换行的输出内容");
    }
}

编译成可执行文件(比如MyApp.exe)后,在CMD里用for /f命令捕获输出并赋值给变量:

:: CMD命令
for /f "delims=" %%a in ('MyApp.exe') do set "output=%%a"
:: 验证变量内容
echo %output%

说明:delims=参数是为了保留包含空格的完整字符串,避免被CMD自动分割;如果你的C#程序输出多行内容,这个命令会把最后一行的内容赋值给output变量,要是需要处理所有行,可以在循环里添加逻辑。

在PowerShell中捕获字符串变量

C#代码和上面一样,用Console.WriteLine()输出字符串即可。在PowerShell里捕获输出更简单,直接把程序的执行结果赋值给变量:

# PowerShell命令
$output = .\MyApp.exe
# 验证变量内容
Write-Host $output

说明:如果C#程序输出多行内容,$output会是一个字符串数组,你可以通过索引(比如$output[0])获取指定行,或者用$output -join "n"把所有行合并成一个字符串。如果需要同时捕获错误输出,可以用$output = .\MyApp.exe 2>&1`。

额外提醒:Environment.Exit()只能传递整数错误码,用来返回执行状态(比如0表示成功,非0表示失败)非常合适,但传递字符串就得靠标准输出,这是脚本和程序之间传递字符串数据的常规方式。

内容的提问来源于stack exchange,提问作者Chives

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:33