如何从 Windows 主机 scp 到源路径有空格的 Windows 主机?

如何从 Windows 主机 scp 到源路径有空格的 Windows 主机?

我想做类似的事情

scp JoeBloe@WindowsHost:c:\Some Folder\foo.txt c:\temp

我知道这是一个在本地 shell 中正确引用并确保远程主机也收到正确引用的问题(因此可能需要双引号)。我尝试了各种引用组合,但只得到“文件不存在”或只是暂停一段时间但不执行任何操作。没有空格的路径没有问题,所以这不是权限问题。

请注意,这与被确定为可能重复的问题不同。该问题针对的是目标路径中有空格且源操作系统为 UNIX 的情况。在本例中,它是源路径,并且客户端和源操作系统都是 Windows。另外,我使用的是 OpenSSH,而不是 pscp。

答案1

如果您使用自 2018 年起在 Windows 10 中集成的 scp 命令,那么您可以运行:

scp JoeBloe@WindowsHost:"\"\"C:\Some Folder\foo.txt\"\"" c:\temp

如果 scp 仍然找不到该文件,则在命令中添加 -v (详细)标志:

scp -v JoeBloe@WindowsHost:"\"\"C:\Some Folder\foo.txt\"\"" c:\temp

查看 scp 在远程主机上查找的文件。输出应包含以下行:

Executing: program ssh.exe host 10.8.0.1, user JoeBloe, command scp -v -f ""C:/Some Folder/foo.txt""
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Connecting to 10.8.0.1 [10.8.0.1] port 22.
debug1: Connection established.
...
debug1: Sending command: scp -v -f "C:/Some Folder/foo.txt"
...

该方法类似于这个答案,只是我必须使用三重引号 - 但我不知道为什么。我无法使用单、双或三重反斜杠转义空格:\\\\\\- 在每种情况下,反斜杠都会更改为斜杠。

答案2

您可以使用:

scp [email protected]:"C:\Path\To\File.txt\" C:\Path\To\Save\File.txt

保存它。之前的答案对我不起作用,因为\"那里有一对多余的。

相关内容