2014-01-29 31 views
0

我有一個名爲myProgram.exe的程序在服務器上的控制檯上運行。在服務器上,我可以在控制檯中鍵入一個命令,它可以工作。
在客戶端,我如何使用批處理文件向此控制檯發送命令。我想附加到這個控制檯並傳遞給它一個命令在一行。這是可能的?如何發送命令到正在運行的程序?批處理文件

服務器:Windows 2003 Server的 客戶端:Windows XP或Win7的

回答

1

remote.exe

詳細的解決方案在服務器 'A':在客戶'B'上: createSession.bat

@echo off 
echo remote /s cmd session1 > commands.txt 
echo @q >> commands.txt 
remote /c A bootSession < commands.txt 
del commands.txt 
remote /c A session1 

如果你想巡航能力超過一個會議,你應該運行在客戶機上的計數器和嵌入客戶端名稱+計數器在uid

你也可以創建隨機的uid。

+0

謝謝,它的工作原理就在第二行echo remote/s cmd session1> commands.txt – Phiber

+0

Happy聽到。我糾正了這條線。 – MrPaulch

1

您可能需要使用PSEXEC(Sysinternals的)

psexec \\%SERVER% c:\FOLDER\FILE.EXE 
+0

這會在那裏執行程序,而不是發送命令給它。 – Migol

+0

這將幫助您從客戶端託管您的程序,如果它基於cmd gui –

+0

正確的,不得不重新讀取他的問題2次才能得到他想要的。 – Migol

0

我在客戶端B的代碼修改方式createSession.bat:

@echo off 
echo remote /s cmd session1 > commands.txt 
echo @Q >> commands.txt 
runas /profile /savecred /user:User1"cmd /C %RemotePath%\remote /c computerA bootSession < %CD%\commands.txt" 
runas /profile /savecred /user:User1"cmd /k %RemotePath%\remote /c computerA session1" 

它工作正常,但CMD(bootSession)仍然打開的第一個實例,即使我送@Q遠程退出。你有想法關閉它,讓第二個實例(session1)。

再次感謝

+0

我都試過,但它不工作: 的RunAs /資料/ SAVECRED /用戶:用戶1 「CMD/C(%RemotePath%\遠程/ C computerA bootSession <%CD%\ commands.txt中)退出」 – Phiber

+0

對不起遲到回答。我沒有看到你已經發布了另一個問題作爲答案! 那麼你的代碼的問題是,你不再提供remote.exe從commands.txt的標準輸入,但沒有解析它到它的子進程的runas。 嘗試從批處理文件中刪除runas,而是通過runas調用批處理文件。 – MrPaulch

+0

我用過:taskkill/f/fi「WINDOWTITLE eq Remote/C ComputerB」「bootSession」「」/ T – Phiber

相關問題