2014-01-29 3 views
0

У меня есть программа myProgram.exe, которая работает в консоли на сервере. На сервере я могу ввести команду в консоли, и она работает.
На стороне клиента, как я посылаю команду на эту консоль, используя командный файл. Я хотел бы прикрепить к этой консоли и передать ей команду в одной строке. Возможно?Как отправить команду запущенной программе? в пакетном файле

Сервер: Windows 2003 Server Клиент: Windows XP или Win7

ответ

1

Подробное решение с remote.exe

на сервере 'A': remote /s cmd bootSession

На клиента 'В': 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

Я изменил свой код createSession.bat в клиенте B:

@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" 

Он отлично работает, но первый экземпляр ЦМД (bootSession) по-прежнему открытым даже я отправить @q на пульте дистанционного управления, чтобы бросить курить. У вас есть идея закрыть его и оставить только второй экземпляр (session1).

Спасибо, в другой раз

+0

Я пробовал это, но он не работает: runas/profile/savecred/user: User1 "cmd/C (% RemotePath% \ remote/c computerA bootSession <% CD% \ commands.txt) & exit" – Phiber

+0

Простите за последнее время ответ. Я не видел, что вы ответили на другой вопрос! Ну, проблема с вашим кодом в том, что вы больше не предоставляете remote.exe с помощью stdin из команд. Txt, но runas, который не анализирует его на дочерний процесс. Попробуйте удалить runas из командного файла и вместо этого вызовите пакетный файл через runas. – MrPaulch

+0

Я использовал: taskkill/f/fi "WINDOWTITLE eq Remote/C ComputerB" "bootSession" ""/T – Phiber

Смежные вопросы