字符串被误解或问题更复杂

时间:2014-03-06 04:58:43

标签: c# command-line system.diagnostics string-literals

我有一个小程序,它通过cmd.exe运行命令行,纯粹是为了舒适。

它基本上是为了让我在一个程序中选择唤醒另一台PC(或使用TightVNC直接连接到它以使其处于待机模式)。

我遇到的问题如下:

这段代码在这里:

string strCmdText = @"cd /D C:\ && cd Program Files\TightVNC && _
 tvnviewer.exe 192.168.0.233 -password=******";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);

由于某些原因,此代码对我不起作用。它没有在命令终端给我任何输出,也没有打开TightVNC进程,而当我只是将它复制/粘贴到我的命令行时,它工作正常,立即打开连接。

我想:“也许这是具有双反斜杠的strCmdText变量的最终输出,但是在此代码中使用的方法相同:

string path = @"C:\Users\Yorrick\Desktop\wakemeonlan\WakeMeOnLan.exe";
string commandText = path + @" /wakeup 192.168.0.233";
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = commandText;
process.StartInfo = startInfo;

在那里,commandText变量具有双反斜杠(\\)。

任何可以帮我找到解决方案的人?这并不是我真的需要这个程序,但我想拥有它,因为它节省了我一点时间(我喜欢我的桌面杂乱无章,因此我尝试使用尽可能少的快捷方式,因为我可能)

谢谢,Yorrick

编辑:在我的命令开头添加“/ C”,它确实有效。

string strCmdText = @"/C cd /D C:\ && cd Program Files\TightVNC && _ tvnviewer.exe 192.168.0.233 -password=******";

我认为/ C的用法仅仅是在命令执行后关闭命令终端&与实际执行的命令没有任何关系?

任何能够澄清为何突然发生作用的人?

1 个答案:

答案 0 :(得分:1)

要回答您的编辑,/C标志并不意味着关闭 - 它意味着执行以下命令。因此,不包括/C标志将不会运行您的命令。