我使用控制台应用程序和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,我可以看到没有发生任何事情。有谁能告诉我这里发生了什么?谢谢!
答案 0 :(得分:4)
如果您的示例是您真正使用的,我会责怪C#字符串转义。您路径中的"\t"
将转换为水平制表符。使用逐字字符串(就像在ProcessStartInfo
中一样)
commands += @" & aws s3 sync C:\test\test2 s3://bbbbbb";
或逃避反斜杠
commands += " & aws s3 sync C:\\test\\test2 s3://bbbbbb";