WinSCP stat命令提示FileNotFound但ls可见文件的问题咨询
在PowerShell环境中,当$File变量值为"/path/to/FileName.csv"时,执行以下WinSCP命令:
& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command "open sftp://username:password@server/" "stat $File" "exit"
返回错误信息:
Can't get attributes of file "/path/to/FileName.csv" No such file or directory. Error code: 2 Error message from server (en): FileNotFound: The supplied file does not exist.
但执行ls命令却能正常看到该目标文件,且路径与文件名完全匹配并区分大小写:
& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command "open sftp://username:password@server/" "ls /path/to/FileName.csv" "exit"
PowerShell变量解析与引号转义问题:原命令中
stat $File的路径未被引号包裹,部分场景下WinSCP无法正确识别完整路径。可在PowerShell中转义双引号,确保路径被包裹后传递给WinSCP,修改命令为:& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command "open sftp://username:password@server/" "stat ""$File""" "exit"这里用
""表示PowerShell中的转义双引号,最终WinSCP会收到stat "/path/to/FileName.csv"的命令。SFTP服务器命令实现差异:部分SFTP服务器对
stat和ls的路径处理逻辑不同——ls可能兼容符号链接、隐性路径前缀等情况,而stat要求完全精确的物理路径匹配。可执行ls -l /path/to/FileName.csv查看文件完整属性,确认是否存在符号链接,若有则需使用链接指向的实际物理路径执行stat。WinSCP工作目录干扰:少数情况下,WinSCP连接后的默认工作目录可能导致绝对路径解析异常。可在
open命令后添加cd /切换到根目录,再执行stat:& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command "open sftp://username:password@server/" "cd /" "stat $File" "exit"
内容的提问来源于stack exchange,提问作者truekoa

