Пакетное программирование DOS pSEXEC - PullRequest
3 голосов
/ 13 мая 2011

У меня есть пакетный файл, скажем, A.bat. При выполнении этот A.bat создаст другой пакетный файл, скажем, remote.bat

Если я вручную скопирую remote.bat на удаленный компьютер, то онработает на 100% идеально.Однако, если я использую его как часть psExec в моем A.bat, он вообще не работает.Тем не менее, мой A.bat во время выполнения говорит ..

Connecting to ABCDEF machine
Starting PsExec Server on ABCDEF machine
Copying C:\remote.bat on ABCDEF machine
Started C:\remote.bat ABCDEF machine with Process Id XXXX

Тем не менее, мне кажется, что файл remote.bat не выполняется вообще.

То, что у меня внутри удаленного.bat is ..

net use \\DIR1\DIR2 password /user:Administrator 
XCOPY \\DIR1\DIR2\DIR3\DIR4\* c:\DIR3\DIR4\ /E 

Я вообще не вижу, как создается DIR3 \ DIR4 под C: моей удаленной машины.Однако, это работает, если я вручную копирую remote.bat и выполняю его на своем удаленном компьютере.

Команда, которую я использую для вызова PsExec:

psexec \\MachineName -u Administrator -p pasword -d -c -f c:\remote.bat

Любой совет?пожалуйста

1 Ответ

2 голосов
/ 22 июня 2011

Ассоциация файлов BAT с CMD находится в вашем локальном профиле пользователя.Я не уверен, как именно Shell справляется с этим, но вызов psexec для удаленной цели не вызовет cmd для запуска вашего пакетного файла.

Вместо remote.bat ставьте cmd.exe /c следующим образом:

psexec \\MachineName -u Administrator -p pasword -d -c -f cmd.exe /c c:\remote.bat

Но сначала вы должны получить файл remote.bat.Все это выглядело бы так:

net use \\MachineName\C$ password /user:Administrator 
XCOPY remote.bat \\MachineName\C$\remote.bat
psexec \\MachineName -u Administrator -p pasword -d -c -f cmd.exe /c c:\remote.bat
net use /delete \\MachineName\C$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...