【问题标题】:C# Console Application uses command line, command does not executeC# 控制台应用程序使用命令行,命令不执行
【发布时间】:2014-10-08 11:50:46
【问题描述】:

我正在使用控制台应用程序和 C# 来执行一些 AWS (S3) CLI 命令。我以为我让它工作了,因为大多数命令执行得很好。但是最后一个命令是sync,它不起作用。但我知道命令本身是正确的,因为复制粘贴到命令行窗口就可以了。以下是我目前所拥有的:

String commands = "echo echo & echo echo"; 
commands += " & aws s3 ls s3://bbbbbb";
commands += " & aws s3 sync C:\test\test2 s3://bbbbbb"; //this is the line that doesn't execute
//make this to use with a Process
ProcessStartInfo commandsToRun = new ProcessStartInfo("cmd", @"/c " + commands);
//make the Process and run it
Process process = new Process();
process.StartInfo = commandsToRun;
process.Start();

我没有任何错误或关于发生了什么的任何线索,我只是没有从最后一个命令中获得输出,如果我使用 ls 或 Cloudberry Explorer 进行检查,我可以看到什么都没有发生了。谁能告诉我这里发生了什么?谢谢!

【问题讨论】:

  • 命令的工作目录重要吗?
  • 只有一个命令,还是几个?你需要插入一些换行符吗?
  • 工作目录无关紧要,因为给出的路径名是绝对的。
  • 有几个,但我不知道我需要换行符。 echo 命令和 ls 没有它们都可以正常工作。

标签: c# command-line amazon-s3 console-application command-line-interface


【解决方案1】:

如果你的例子是你真正使用的,我会责怪 C# 字符串转义。路径中的"\t" 将转换为水平制表符。使用逐字字符串(就像您在 ProcessStartInfo 中所做的那样)

commands += @" & aws s3 sync C:\test\test2 s3://bbbbbb";

或者转义反斜杠

commands += " & aws s3 sync C:\\test\\test2 s3://bbbbbb";

【讨论】:

  • 哦!我从没想过字符串转义。这就是我真正使用的,所以@ 解决了这个问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2012-09-01
  • 1970-01-01
  • 2021-03-26
  • 2012-10-11
相关资源
最近更新 更多