C#Console应用程序使用命令行,命令不执行

时间:2014-08-14 18:02:20

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

我使用控制台应用程序和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,我可以看到没有发生任何事情。有谁能告诉我这里发生了什么?谢谢!

1 个答案:

答案 0 :(得分:4)

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

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

或逃避反斜杠

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