【问题标题】:Command Prompt (cmd) is not executing Plink SSH Command命令提示符 (cmd) 未执行 Plink SSH 命令
【发布时间】:2018-01-09 12:03:52
【问题描述】:

我正在尝试使用批处理文件中的以下命令执行批处理文件 (.bat)。 我有一个包含以下内容的批处理文件;

@ECHO OFF
cmd.exe /K "cd C:\Program Files (x86)\PuTTY && C:"
set PATH=%PATH%;C:\Program Files (x86)\PuTTY
pause
plink.exe -ssh username@firewall1 -pw PassWord! < commands.txt > c:\output_.csv"
pause

plink.exe 命令在手动输入时有效。

commands.txt 目前只是一个简单的防火墙命令。

我在运行批处理文件时看到的只是 Putty 文件夹中的 cmd 窗口打开点,仅此而已。

那么我怎样才能让它运行呢?

【问题讨论】:

  • 命令C:是什么意思?另外Set 变量的推荐方法是Set "VariableName=VariableValue"双引号很重要.

标签: batch-file ssh cmd putty plink


【解决方案1】:

您的批处理文件在第 2 行打开一个新的 cmd 窗口。这可能不是你想要的。它还会更改当前目录和当前驱动器,读取 HELP CD,然后将该行更改为 cd /d "C:\Program Files (x86)\PuTTY"

另外,作为奖励建议,您每次运行此命令时都会更改 PATH,无论如何都会将您创建的 putty 目录添加为当前目录,因此此命令是不必要且多余的。

所以,我会让你的蝙蝠像这样简单

@ECHO OFF
CD /D "C:\Program Files (x86)\PuTTY"
plink.exe -ssh username@firewall1 -pw PassWord! <commands.txt >c:\output_.csv

【讨论】:

  • 实际上还有一个问题,当我运行 plink 时,它会显示带有用户名的 cmd 提示框,我如何删除此命令提示框,运行 .bat 文件后它永远不会退出。
【解决方案2】:

我建议让批处理文件更简单:

@Start "" /D "%ProgramFiles(x86)%\PuTTY" plink.exe -ssh username@firewall1 -pw PassWord! <commands.txt >C:\output_.csv

您可以考虑运行其他选项,例如 /MIN,在命令提示符处键入 Start /? 以获取使用信息

【讨论】:

  • 也许是为了让我前进,我不知道在“”中放什么?因为我刚刚在 .bat 文件中运行了你的脚本,但什么也没发生。我的董事会还有另一个问题阻碍了我的进程。
  • 如果您想在它们之间添加一个窗口标题,否则将双引号保留为空,它们应该保留在那里。