2014-03-06 25 views
1

我有一個小程序,通過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

編輯:Appearantly添加 「/ C」 我的命令開始,它的工作。

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

我以爲的使用/ C是簡單的命令被執行後&沒有任何與該命令實際執行或不關閉指令終端?

任何人可以澄清爲什麼突然起作用?

+0

它可能與你的命令串聯有關。沒有/ C開關,那可能不起作用。首先嚐試一下sinle命令。哦,更好的是,使用'ProcessStartInfo'而不是cd到目標文件夾。然後你甚至不需要cmd.exe,但你可以直接啓動查看器。 – PMF

+0

我試過使用單個命令之前連接這樣的命令,它給了我完全相同的結果而不使用/ C開關。是的,我以前可能應該想到這個選擇,但是我已經很累了,而且因爲這不是一個商業產品,所以我並不介意我做的事情有點草率,我期望的是一件好事結果:) – Yorrick

回答

1

要回答您的編輯,/C標誌並不意味着關閉 - 它意味着執行以下命令。所以不包括/C標誌不會運行你的命令。

+0

我明白了,這很有道理:)感謝您的澄清:) – Yorrick