psftp随本地随机失败:无法打开

时间:2015-04-21 15:57:59

标签: sftp putty

psftp put失败了大约百分之一的时间,例如

  

local:无法打开d:\\ WorkPath \\ F_56MTV56201504201707224380.csv

  1. 调用应用程序需要对文件存在的目录路径以及上传文件本身的权限
  2. 上传文件所在的目录路径未锁定。见第(1)项
  3. 要上传的csv文件是用C ++创建的,fclose()函数在关闭文件时不返回EOF
  4. 目录上载路径已从防病毒软件中排除
  5. 100个上传中的99个按预期工作
  6. 通过调用相同的批处理重新上载失败的上传文件
  7. 解决方案是多线程的
  8. 在这一点上,我唯一看到做的不同就是使用带有本地文件名的lcd命令,而不是使用完全限定的路径,但理论上,这不应该改变任何东西,或者我错过了什么?

    批处理文件示例:

    "D:\\Program Files\\ApplicationPath\\psftp.exe" ^
        1.2.3.4 -l username -pw password -batch -bc ^
        -b "d:\\\\WorkPath\\\\\EXMSP35201504210946233890.script" ^ 
        > "d:\\\\WorkPath\\\\\EXMSP35201504210946233890.script.log" 2>&1
    

    示例脚本文件:

    put d:\\\\WorkPath\\\\EXMSP35201504210946233890.csv
    bye
    

1 个答案:

答案 0 :(得分:0)

使用一些WinAPI logger找出基础CreateFile WinAPI函数调用失败的原因。


或者使用其他SFTP客户端以及更详细的错误消息。

例如,等效的WinSCP script是:

winscp.com /command ^
    "option echo on" ^
    "open sftp://username:password@1.2.3.4/" ^
    "put d:\WorkPath\EXMSP35201504210946233890.csv" ^
    "exit" > d:\WorkPath\EXMSP35201504210946233890.script.log

使用WinSCP,您会收到如下错误:

  

文件或文件夹' d:\ WorkPath \ EXMSP35201504210946233890.csv'不存在。
  系统错误。代码:3。

     

系统找不到指定的路径。

查看introduction to WinSCP scripting

(我是WinSCP的作者)


您不应该在路径中使用双反斜杠。虽然Windows容忍这一点。