在cmd中通过psexec运行多个命令

8

我正在努力创建一个单一的命令,可以在另一台机器的命令行上运行多个操作。以下是我的要求:

  • 使用psexec访问远程机器
  • 进入适当的目录和文件
  • 执行ant任务
  • 退出cmd
  • 在一行中运行

我可以从“运行”中运行下面的命令来完成所需的操作,但似乎无法正确设置psexec以理解它的格式。

cmd /K cd /d D:\directory & ant & exit

我尝试将这个应用到下面的psexec示例中:

psexec \\machine cmd /K cd /d D:\directory & ant & exit 

执行此命令时,它将激活命令行并移动到 D:\directory,但不会执行剩余的命令。添加 "" 只会产生更多问题。
有人可以指导我正确的格式吗?或者除了psexec之外,还有其他可以使用的工具来完成此操作(仅限免费选项)?
5个回答

10

通过进一步的互联网搜索和试错,我终于找到了解决方法。psexec需要/c来运行多条命令,但这种语法在我上面写的设置中不起作用。我已经成功运行了下面的命令来实现我所需的功能。

psexec \\machine cmd /c (^d:^ ^& cd directory^ ^& ant^) 

我不需要退出,因为psexec会在完成后自己退出。您也可以使用“&&”来要求成功继续执行下一个命令。发现这个论坛很有帮助。

http://forum.sysinternals.com/psexec_topic318.html

还有这个用于运行psexec命令的网站

http://ss64.com/nt/psexec.html


1
请问您能否解释一下何时需要使用 ^ 符号?我在这段代码中无法理解它的用法。 - IGRACH

2

以下代码可正常运行:

psexec \计算机名称 cmd /c "echo 嘿1 & echo 嘿2"


1

对于简单的情况,我使用:

PsExec \\machine <options> CMD /C "command_1 & command_2 & ... & command_N"

对于更复杂的情况,使用带有PsExec的-c开关的批处理文件可能更合适:

-c开关指导PsExec将指定的可执行文件复制到远程系统以供执行,并在程序运行结束时从远程系统删除该可执行文件。

PsExec \\machine <options> -c PSEXEC_COMMANDS.cmd <arguments>

0

我总是这样使用 :) 而且正常工作

psexec \\COMPUTER -e cmd /c (COMMAND1 ^& COMMAND2 ^& COMMAND3)

0

既然你询问了其他选项,而且这个问题涉及到标签配置管理--我猜你可能会对Jenkins(或Hudson)感兴趣。它提供了非常好的创建主从机制的方式,可以帮助简化构建过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接