2015-08-14 165 views
1

我有一個網站,使用asp.net,我想創建一個批處理腳本並運行它。批處理腳本命令不能遠程工作

我使用它來獲取最新的文件的TFS工作區

中的.bat只有

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" 

tf get "workspacePath" /force /recursive 

,當我在遠程服務器上運行此通過點擊蝙蝠本身,它的工作原理好,做我需要的一切。

當我嘗試通過網站使用它,它不起作用。

我確認它確實讀取並試圖通過在蝙蝠位置添加一個隨機的.txt文件來執行該腳本,並讓該腳本將其刪除,該工作通過該站點進行。

我有很多次通過我的網站運行批處理腳本,但對於這個特定的例子,它不工作。

我試圖通過執行它...

Process.Start(@"filepath\getStuff.bat"); 

我也嘗試過使用PSEXEC

Process p = new Process(); 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.FileName = @"path\PsExec.exe"; 
    p.StartInfo.Arguments = @"\\vdvws052 ""C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\TF.exe"" get ""workspacePath"" /force /recursive"; 
    p.Start(); 

每一次我都試過方式繞過批處理腳本我還增加了一個.WaitForExit() incase這是問題,但這也沒有幫助

+0

確保指定執行命令2的'StartInfo.WorkingDirectory'也看到,如果你可以執行'從遠程計算機的命令提示符下PsExec'。看看你是否從'PsTools'返回任何錯誤。 – Habib

+0

我不知道你爲什麼在'Arguments ='部分裏面有雙引號。你爲什麼不利用string.Format函數,並且做這樣的事情:'p.StartInfo.Arguments = String.Format (「\」{0} \「\」{1} \「」,SomePath,someotherparams)'.... etc併爲您將要傳遞的參數數量添加'{}'參數 – MethodMan

+0

@MethodMan當字符串是@「一些文本」轉義字符被忽略,「\」與「」相同以表示一個單引號 – Nick

回答

0

使用&符號爲每個命令。

&用於組合兩個命令(或更多)。執行命令1,然後命令2

""C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\TF.exe"" & get ""workspacePath"" /force /recursive" 

& &一個條件組合。在command1成功完成

""C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\TF.exe"" && get ""workspacePath"" /force /recursive" 
相關問題