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

如何在C#中通过命令行参数传递Win32 type命令的输出?

如何将Win32 type命令的输出作为C#程序的命令行参数?

先说说你原来的命令哪里出问题了:你把C#代码编译和程序运行的逻辑混在一起,还直接把type Demo.json当作字符串参数传给程序,这就导致程序收到的只是Demo、type、Demo.json这些文本,根本没执行type命令去读取文件内容。

下面分两种场景给你正确的实现方式:

1. 在Windows命令提示符(CMD)中实现

CMD没有像Linux Shell那样直接的命令替换语法,得用for /f命令捕获type的输出,再传递给程序:

步骤1:先编译C#代码

先运行编译命令生成可执行文件:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Demo.cs

执行后会得到Demo.exe文件。

步骤2:用for /f传递type的输出作为参数

运行以下命令,就能把Demo.json的内容作为命令行参数传给Demo.exe:

for /f "delims=" %a in ('type Demo.json') do Demo.exe "%a"
  • delims= 是为了保留JSON内容里的空格和特殊字符,避免被拆分成多个参数
  • 给%a加双引号"%a",防止JSON里的空格导致参数被拆分

如果你的JSON文件有多行内容,CMD的for /f默认会逐行处理,这时候更推荐用下面PowerShell的方法来一次性传递完整内容。

2. 在PowerShell中实现

PowerShell支持直接的命令替换,实现起来更简单:

步骤1:编译代码

和CMD里的编译命令一致:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Demo.cs

步骤2:传递文件内容作为参数

用Get-Content(PowerShell里type是它的别名)加上-Raw参数,一次性获取整个文件的内容作为单个参数传递:

.\Demo.exe (Get-Content Demo.json -Raw)

或者用type的写法:

.\Demo.exe (type Demo.json -Raw)

-Raw参数很关键,它会把整个文件内容读取成一个完整的字符串,而不是按行拆分成多个元素,这样你的C#程序的args[0]就能拿到完整的JSON内容了。

验证效果

你的现有C#代码已经可以正常输出第一个命令行参数,运行上面的命令后,控制台就会输出{ "Message" : "Hello World" }了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:34:37