【问题标题】:Plink cmd.exe mkdir with a space doesn't work用空格链接 cmd.exe mkdir 不起作用
【发布时间】:2011-10-07 23:00:02
【问题描述】:

我在 Windows 7 桌面上使用 plink 在 Windows 2008 服务器上创建文件夹 a。 服务器使用 pragmaSSH 来允许 SSH 连接,一切正常。

我要创建的目录中有一个空格,这就是我的问题开始的地方。

我有一个基本的plink 命令,就像这样工作

plink.exe -i privatekey.ppk user@server cmd.exe /c mkdir "c:\asdfasdf"

但是将该命令更改为此失败。所以空间肯定是我的问题。

plink.exe -i privatekey.ppk user@server cmd.exe /c mkdir "c:\asdf asdf"

我已尝试以我能想到的所有可能方式来逃避这种情况,但总是遇到同样的空间问题。

好的,经过 60000 次尝试后,我想出了如何将引号传递给服务器。

plink.exe -i privatekey.ppk useryserver mkdir \\"""c:\asf asf\\"""

并在每一侧发送 1 个引号并将命令运行为 mkdir "c:\asf asf"

【问题讨论】:

  • 你能想到的所有可能的方法是什么?

标签: spaces cmd mkdir plink


【解决方案1】:

引号足以转义 plink 的命令,它不够聪明,无法在另一边再次引用(合理,因为它不知道可能在那里运行什么奇怪的 shell)。

所以你需要以下内容:

plink.exe -i privatekey.ppk user@server cmd.exe /c mkdir "\"c:\asdf asdf\""

【讨论】:

  • 这也给出了同样的问题,它仍然试图只创建 asdf 文件夹。子目录或文件 c:\asdf 已存在。处理时发生错误:c:\asdf。子目录或文件 asdf 已存在。处理时出错:asdf。
  • @johnnydeluxable:可能在不同的情况下应该采用不同的转义引号的方式。一个是@Joey 的回答,其他的是:"^"c:\asdf asdf^"""""c:\asdf asdf"""
  • 也可以将整个mkdir 命令(包括参数)用双引号括起来,并转义文件夹名称周围的双引号。
  • 我尝试使用 """、"\"、"^" 和 mkdir 进出引号,所有相同的东西 plink 总是删除太多引号,并且它慢慢地只制作 c: \asdf 无论我如何通过它,我都会得到相同的结果,就好像我没有添加任何类型的引号一样。
  • 我尝试在另一端使用 FreeBSD 主机,\" 工作正常。我认为这是转义引号的正确方法的原因是Windows程序负责解析自己的命令行。这包括引号之类的东西。因此,第一级引号将被plink 本身剥离,然后将剩余的内容传递给另一个系统(在这种情况下删除 ``)。据我所知,在任何地方都不需要外壳引用,因为没有外壳可以删除引号。除非我在这里忽略了某些东西。
猜你喜欢
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多