c# - 将大字符串参数传递给外部应用程序
问题描述
我正在开发一个程序,该程序运行具有多个(大文本)参数的另一个应用程序。当我通过 cmd.exe 运行这个外部应用程序时,一切正常(也有多行流动文本作为参数)。
ttv.exe -I <root directory> -v vMale -i "large large text" -o test.pcm
但是当我尝试从我的程序中调用它时,我发现“大文本”参数对于这个调用来说太大了,因为字符串限制为 254 个字符?!?
这里调用进程的这部分代码:
string path = @"<path to exe>";
string arg1= @"-I <root directory>";
string arg2= @"-v vMale";
string arg3= @"-o test.pcm";
string arg4= @"-i """+ text+"";
commandline.StartInfo.UseShellExecute = false;
commandline.StartInfo.RedirectStandardInput = true;
commandline.StartInfo.WorkingDirectory = path;
commandline.StartInfo.FileName = Path.Combine(path, "ttv.exe");
commandline.StartInfo.Arguments = " " + arg1+ " " + arg2+ " " + arg3+ " " + arg4;
commandline.Start();
我尝试了几种使用commandline.StandardInput.Write()
, .WriteLine()
, 特殊引号字符的解决方案,\"
但没有任何效果。我认为控制台会在字符串太长时自动截断我的字符串。这个问题还有其他解决方案吗?当有人可以提供帮助时会很棒。谢谢
解决方案
我不知道为什么,但我明白了。改变论点的顺序会带来成功:当我写
commandline.StartInfo.Arguments = " " + arg1+ " " + arg2+ " " + arg4+ " " +arg3;
和
var arg3 = @"-o test.pcm";
var arg4= "-i \"long long text\"";
它有效:-/引用的大文本不应该作为最后一个论点吗?对我来说没有意义...感谢您谈论 xD
推荐阅读
- c# - 如何使用 ASP.NET 处理程序将带有 .json 的 url 重写为 .ashx
- python - Django行不更新trowviews.py
- css - CSS Flex - 如果内容更宽,则切换到行的列?
- angular - 为什么我的角度材料形式输入仅在一个组件中未正确显示?
- javascript - iOS 上的 Nativescript 推送器
- firebase - Firestore - 如何使用 DocumentReference 指向另一个项目的文档?
- amazon-web-services - DynamoDB 恢复到新表并更新 Terraform
- android - BottomNavigationBar 中项目的水平滚动
- sql - 如何内部连接两个表?
- python - Tensorflow 2.1/Keras - 尝试冻结图时出现“输出节点不在图中”错误