我想做类似的事情
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
保存它。之前的答案对我不起作用,因为\"
那里有一对多余的。