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

时间:2012-01-04 19:33:12

标签: ant cmd configuration-management psexec

我正在创建一个命令,它将在另一台机器的命令行上运行多个东西。这是我想要做的。

  • 使用psexec访问远程计算机
  • 前往正确的目录和文件
  • 执行ant任务
  • 退出cmd
  • 一行一行

我可以从Run运行以下命令来完成我需要完成的工作,但似乎无法使psexec的格式正确理解它。

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

我已经尝试将其应用于下面的psexec示例:

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

执行此操作时,它将激活命令行并前往D:\directory,但不会执行其余命令。添加""只会产生更多问题。

任何人都可以指导我使用正确的格式吗?或者除了psexec以外我可以用来完成这个(仅限免费选项)?

5 个答案:

答案 0 :(得分:7)

经过一些互联网搜索和反复试验后,终于弄明白了。 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 :(得分:2)

这有效:

psexec \ ComputerName cmd / c“echo hey1& echo hey2”

答案 2 :(得分:0)

由于您询问了其他选项,并且这有标签配置管理 - 我想您可能对Jenkins(或Hudson)感兴趣。它提供了创建主从机制的非常好的方法,可以帮助简化构建过程。

答案 3 :(得分:0)

我总是这样使用:)并且正常运作

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

答案 4 :(得分:0)

在简单情况下,我使用:

const airports = "PHX BKK OKC JFK LAX MEX EZE HEL LOS LAP LIM".split(" ");

const routes = [
  ["PHX", "LAX"],
  ["PHX", "JFK"],
  ["JFK", "OKH"],
  ["JFK", "HEL"],
  ["JFK", "LOS"],
  ["MEX", "LAX"],
  ["MEX", "BKK"],
  ["MEX", "LIM"],
  ["MEX", "EZE"],
  ["LIM", "BKK"]
];

const adjacencyList = new Map();

function addNode(airport) {
  adjacencyList.set(airport, []);
}

function addEdge(origin, destination) {
  adjacencyList.get(origin).push(destination);
  const dest = adjacencyList.get(destination);

  if (!dest) {
    addNode(destination)
  }
  adjacencyList.get(destination).push(origin);
}

airports.forEach(addNode);

routes.forEach(route => addEdge(...route));

console.log("result");
adjacencyList.forEach((value, key) => {
  console.log(key, value);
});

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

-c开关指示PsExec将指定的可执行文件复制到远程系统中以供执行,并在程序完成运行后将其从远程系统中删除。

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